programm läuft nach autostart nicht richtig

Anfängerfragen zum Programmieren mit PureBasic.
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

programm läuft nach autostart nicht richtig

Beitrag von sen-me »

ja das programm ins autostart eingefügt
(Microsoft\windows\currentversion\run)

und wenn ich neustarte, dan öfnets das programm, aber ich kann dan nicht in datein schreiben.
wieso nicht?

wen ich es dan schließe und amnuell nochmal aufrufe, dan gehts auf einmal

Code: Alles auswählen

Procedure Save(is.b)
 If CreateFile(0,link$+"data.dat")=0
  MessageRequester("Laufzeitfehler","Es trat ein Fehler bei der Ausführung des Programmes auf.",0)
 Else
  as.w=GetGadgetState(0)
  For x.b=0 To CountGadgetItems(0)-1
   If is=1 And as=x
    RemoveGadgetItem(0,as)
    is=0
   EndIf
   If CountGadgetItems(0)<>x
    WriteStringN(Trim(GetGadgetItemText(0,x,0)))
    WriteStringN(Trim(GetGadgetItemText(0,x,1)))
   EndIf
  Next
  CloseFile(0)
 EndIf
EndProcedure
ps.
Save() wird natürlich am bestimmten zeitpunkt aufgerufen
Christi
Beiträge: 154
Registriert: 31.08.2004 14:17
Kontaktdaten:

Beitrag von Christi »

der relative pfad wird nicht richtig gesetzt
machs so:

Code: Alles auswählen

puffer.l = AllocateMemory(1024)
GetModuleFileName_(0, puffer.l, 1023)
hier.s = GetPathPart(PeekS(puffer.l))
FreeMemory(puffer.l)

OpenFile(0, hier.s + "text.txt")
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Besser wäre vielleicht:

Code: Alles auswählen

puffer.l = AllocateMemory(1024)
GetModuleFileName_(0, puffer.l, 1023)
hier.s = GetPathPart(PeekS(puffer.l))
FreeMemory(puffer.l)
SetCurrentDirectory_(hier)

OpenFile(0, "text.txt")
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Christi
Beiträge: 154
Registriert: 31.08.2004 14:17
Kontaktdaten:

Beitrag von Christi »

ja, danke für den tip
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Es würde noch kürzer gehen:

Code: Alles auswählen

hier.s = Space(1000) 
GetModuleFileName_(0,@hier, 999)
SetCurrentDirectory_(GetPathPart(hier))
2 (bzw. 1) Zeile(n) eingespart! ;)
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Christi
Beiträge: 154
Registriert: 31.08.2004 14:17
Kontaktdaten:

Beitrag von Christi »

Wie ist das in diesem Fall mit dem Speicher den der String einnimmt ? Wird mitten in den String eine Null geschrieben und der speicherbereich belassen ? Ich vermute das. Desswegen verwende ich diese Methode ungern aber vieleicht kann mich ja jemand aufklären ?
Benutzeravatar
vonTurnundTaxis
Beiträge: 2130
Registriert: 06.10.2004 20:38
Wohnort: Bayreuth
Kontaktdaten:

Beitrag von vonTurnundTaxis »

Du kannst ja danach

Code: Alles auswählen

hier = ""
schreiben ;)
Nicht durch Zorn, sondern durch Lachen tötet man
ClipGrab | Pastor - jetzt mit kurzen URLs!
Benutzeravatar
sen-me
Beiträge: 478
Registriert: 17.07.2005 16:02
Wohnort: Saarbrücken
Kontaktdaten:

Beitrag von sen-me »

hab rausgefunden das es daran gar nicht liegt...

Code: Alles auswählen

Repeat
   EventID=WaitWindowEvent()
   If EventID=#PB_EventGadget
    Select EventGadgetID()
     Case 1
      File$=OpenFileRequester("Datei wählen","","Alle (*.*)|*.*",0)
      If File$
       endung$=GetExtensionPart(File$)
       name$=GetFilePart(File$)
       name$=Trim(name$)
       If name$<>""
        ReplaceString(name$,"."+endung$,"",3)
        AddElement(ExeIcons())
        ExeIcons()\Exe = File$
        ExeIcons()\Icon = ExtractIcon_(GetModuleHandle_(0), @ExeIcons()\Exe, 0)
        AddGadgetItem(0,CountGadgetItems(0),name$+Chr(10)+File$,ExeIcons()\Icon)
        Save(0)
       EndIf
      EndIf
;.....

Code: Alles auswählen

Procedure Save(is.b)
 puffer.l=AllocateMemory(1024)
 GetModuleFileName_(0,puffer,1023)
 hier.s=GetPathPart(PeekS(puffer))
 FreeMemory(puffer)
 If CreateFile(0,hier+"data.dat")=0
  MessageRequester("Laufzeitfehler","Es trat ein Fehler bei der Ausführung des Programmes auf.",0)
 Else
  MessageRequester("Link:",link$+" link: "+hier+" Select: "+Str(GetGadgetState(0))+" Count: "+Str(CountGadgetItems(0)),0)
  as.w=GetGadgetState(0)
  For x.b=0 To CountGadgetItems(0)-1
   If is=1 And as=x
    RemoveGadgetItem(0,as)
    is=0
   EndIf
   If CountGadgetItems(0)<>x
    WriteStringN(Trim(GetGadgetItemText(0,x,0)))
    WriteStringN(Trim(GetGadgetItemText(0,x,1)))
   EndIf
  Next
  CloseFile(0)
 EndIf
EndProcedure
er bint gar keine message aus(was es ja anch dem script nach dem befehl Save() tun sollte), aber das hinzufügen funktioniert...
es wäre so als würde er den Save(0) befehl ignorieren
Antworten