Hi,
ich hab mal ein kleines Experiment gemacht und wollte beim Beenden des Programmes die Logs rausschreiben.
SUB GLB_ON_QUIT:
LOCAL output$[], tmp$
IF sys_settings.debugging = 1
SPLITSTR(PLATFORMINFO$("TIME"), output$[], " ")
OPENFILE(0, "logs/fps_" + output$[0] + "_" + output$[1] + ".txt", -1)
IF LEN(fps_log[]) > 0
FOREACH m IN fps_log[]
tmp$ = m.date$ + " | fps: " + m.log_fps
WRITELINE 0, tmp$
NEXT
ENDIF
CLOSEFILE 0
ENDIF
ENDSUB
Leider bekomme ich nur die Fehlermeldung: error 3 zurück geworfen und die Logs werden nicht geschrieben.
Irgendeine Idee, was error 3 zu bedeuten hat? Ich wäre ganz glücklich, wenn mir hier jemand helfen könnte! =D
LG
W.
du schreibst OPENFILE ... -1, also anhängen an bestehende Datei.
Besteht die Datei denn wirklich schon? Oder soll die erst neu geschrieben werden? In dem Fall wäre Option "0" wohl die richtige.
Da die Uhrzeit Bestandteil des Dateinamens ist, gehe ich mal davon aus, dass die Datei zu diesem Zeitpunkt noch nicht besteht :)
zumindest dieses Minimalbeispiel funktioniert
STDOUT "Test Log-Datei"
KEYWAIT
END
SUB GLB_ON_QUIT:
OPENFILE(0, "testglbonquit.txt", FALSE)
WRITELINE 0, "schreib mir mal"
WRITELINE 0, "ne LOG-Datei"
CLOSEFILE 0
ENDSUB
Allerdings müsste es mit -1 auch gehen, wie ich gerade gestest habe. Muss dann wohl doch noch einen anderen Grund haben.
[EDIT]
guck mal hier:
http://de.wikipedia.org/wiki/Dateiname#Problematische_und_unzul.C3.A4ssige_Zeichen_oder_Namen
Dein erzeugter Dateinamen enthält unzulässige Zeichen.
bei mir wäre der Name z.B. "fps_2013-11-15_12:24:06.txt
Die Doppelpunkte mag er wohl nicht
am besten die Doppelpunkte rausschmeissen, dann gehts.
also statt
OPENFILE(0, "logs/fps_" + output$[0] + "_" + output$[1] + ".txt", -1)
dann
OPENFILE(0, "logs/fps_" + output$[0] + "_" + REPLACE$(output$[1], ":", "") + ".txt", -1)
Verflixt, stimmt! An den Doppelpunkt hatte ich gar nicht gedacht.
Das ist eines der Symbole, das von Windows nicht zugelassen wird!
Ich teste es gleich mal! Danke für den Tip! ^^
Klasse, hat funktioniert:
Der Filename wird richtig dargestellt und es wird auch korrekt geschrieben: fps_2013-11-15_14_47_03.txt
2013-11-15 14:46:55 | fps: 117
2013-11-15 14:46:56 | fps: 122
2013-11-15 14:46:57 | fps: 121
2013-11-15 14:46:58 | fps: 121
2013-11-15 14:46:59 | fps: 122
2013-11-15 14:47:00 | fps: 122
2013-11-15 14:47:01 | fps: 122
2013-11-15 14:47:02 | fps: 122
2013-11-15 14:47:03 | fps: 120
SUB GLB_ON_QUIT:
LOCAL output$[], tmp$, time$[]
IF sys_settings.debugging = 1
SPLITSTR(PLATFORMINFO$("TIME"), output$[], " ")
SPLITSTR(output$[1], time$[], ":")
OPENFILE(0, "logs/fps_" + output$[0] + "_" + time$[0] + "_" + time$[1] + "_" + time$[2] + ".txt", -1)
IF LEN(fps_log[]) > 0
FOREACH m IN fps_log[]
tmp$ = m.date$ + " | fps: " + m.log_fps
WRITELINE 0, tmp$
NEXT
ENDIF
CLOSEFILE 0
ENDIF
ENDSUB
Willi was tusch du ? :D
Experimentieren! :D
Hat auch genauso gefunzt, wie ich es mir gedacht hatte!