Seite 1 von 1
programm läuft nach autostart nicht richtig
Verfasst: 18.08.2005 18:54
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
Verfasst: 18.08.2005 18:56
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")
Verfasst: 18.08.2005 20:48
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")
Verfasst: 18.08.2005 21:05
von Christi
ja, danke für den tip
Verfasst: 18.08.2005 21:13
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!

Verfasst: 18.08.2005 21:18
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 ?
Verfasst: 18.08.2005 21:47
von vonTurnundTaxis
Du kannst ja danach
schreiben

Verfasst: 19.08.2005 01:04
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