[GELÖST] Writefile will nicht so recht...

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: [GELÖST] Writefile will nicht so recht...

BeitragSo, Jul 01, 2012 18:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
habe ein Problem mit BlitzMax. Ich habe folgenden Code geschrieben: BlitzMax: [AUSKLAPPEN]
Global WOFLOGDIR:String = GetUsrDataFile() + "\CO2 Software\World Of Farming\Logs"

Function CreateLog:TStream()
CreateDir(WOFLOGDIR)

Local LogFile:TStream = WriteFile(WOFLOGDIR + "\" + CurrentDate() + "-" + CurrentTime() + ".log")

WriteLine(LogFile, "*** LOG CREATED ON " + CurrentDate() + ", " + CurrentTime() + " ***")
Return LogFile
End Function

Zur Erklärung: GetUsrDataFile() gibt den angegebenen User-Dir-Pfad zurück. Der Ordner befindet sich momentan auf "C:\Users\Marius\Documents\My Games". Die Funktion CreateLog() Soll erst - falls nicht vorhanden - einen Ordner namens "Logs" erstellen, und dann darin eine Datei mit dem Title "MomentanesDatum-MomentaneUhrzeit.log".
Dann soll nochmal das Erzeugungsdatum und - Uhrzeit in die datei geschrieben werden. Zum schluss soll der file-handle returned werden.
Alledings schmiert das Programm bei der WriteLine() - Zeile ab, und ich weiß nicht warum. Fehlermeldung ist folgende Zitat:
Unhandled Exception:Attempt to access field or method of Null object


Ich hoffe ihr könnt mir helfen
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
  • Zuletzt bearbeitet von CO2 am So, Jul 01, 2012 20:21, insgesamt einmal bearbeitet

BladeRunner

Moderator

BeitragSo, Jul 01, 2012 19:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Bedeutet wohl der Stream konnte nicht erstellt werden. Mag sein dass Du nicht die Be3rechtigung zum erstellen des Ordners hast. Ich würde einzelne Debugausgaben nach jeder Aktion ausführen oder es gleich mit debugstop anhalten und schrittweise durchgehen. Dann siehst Du an welcher Stelle es hapert.
Zu Diensten, Bürger.
Intel T2300, 2.5GB DDR 533, Mobility Radeon X1600 Win XP Home SP3
Intel T8400, 4GB DDR3, Nvidia GF9700M GTS Win 7/64
B3D BMax MaxGUI

Stolzer Gewinner des BAC#48, #52 & #92
 

PhillipK

BeitragSo, Jul 01, 2012 20:01
Antworten mit Zitat
Benutzer-Profile anzeigen
Sieht ziemlich korrekt aus.
Ausser, vllt, gibt das hier:
Global WOFLOGDIR:String = GetUsrDataFile() + "\CO2 Software\World Of Farming\Logs"
einen doppelslash wieder (bzw GetUsrDataFile() gibt hinten ein slash wieder? keine ahnung). Keine ahnung, ob das einen fehler verursachen kann, aber naja - den Writefile-path am besten mal als string speichern und ausgeben.
Ich persönlich baue ständig mist mit sowas Smile

Ausserdem: ich finde es sauberer, wenn man erstmal schaut, ob ein ordner existiert, bevor man etwas erstellt.

BlitzMax: [AUSKLAPPEN]
If (FileType(WOFLOGDIR) =0 Then CreateDir(WOFLOGDIR);


ansonsten, berechtigungen. Versuch mal spasseshalber, deine exe als administrator auszuführen, vielleicht gehts dann Smile
 

CO2

ehemals "SirMO"

BeitragSo, Jul 01, 2012 20:21
Antworten mit Zitat
Benutzer-Profile anzeigen
Ok, habe alles durchgetestet: Es liegt nicht an der Berechtigung, sondern am Dateinamen. Blitzmax kommt anscheinend nicht mit CurrentDate() und CurrentTime() im Dateinamen klar...

Habs jetzt anders gelöst: Ich benutze eine Logdatei ("wof.log") und dort schreibe ich dann abschnittsweise rein (Also zum beispiel "Log Created on ****", usw.)

Danke für die Hilfe
mfG, CO²

Sprachen: BlitzMax, C, C++, C#, Java
Hardware: Windows 7 Ultimate 64-Bit, AMX FX-6350 (6x3,9 GHz), 32 GB RAM, Nvidia GeForce GTX 750 Ti
 

PhillipK

BeitragMo, Jul 02, 2012 1:35
Antworten mit Zitat
Benutzer-Profile anzeigen
Wenn du die dateinamen doch lieber mit einem Datum / uhrzeit hättest, solltest du die doppelpunkte rausfiltern.

Ich rate nun wieder einmal, doch unter windows ist ein : verboten als dateiname (gib spasseshalber mal bei einem neuen ordner / textdatei ein paar sonderzeichen ein. Win7 gibt mir eine meldung, das dies verboten sei!) (also : \ / ; * ' um ein paar zu nennen).

Hierfür musst du nun einfach die Daten als string holen und die zeichen austauschen.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group