Problem beim erstellen von Dateien [erledigt]

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

FunkMonk

Betreff: Problem beim erstellen von Dateien [erledigt]

BeitragDo, Jul 14, 2011 0:15
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,

ich versuche grade meinen, in Blitz3d geschriebenen, Mapeditor auf Blitzmax umzuschreiben. Stehe aber im moment etwas auf dem Schlauch.

Ich habe eine Funktion "Newmap" welche das Maparray mit einem Standrtwert füllt und dass ganze dann in eine .map Datei im Unterverzeichniss "maps" schreiben soll.

Das Problem ist dass der Stream anscheinend nicht geöffnet wird. Gleiches Problem habe ich mit der Funktion, welche die Map nachher wieder auslesen soll. Aber ich hoffe dass wenn ich den Fehler hier beseitigen kann, dies auch beim laden schaffe.

Hier mal der Code:
BlitzMax: [AUSKLAPPEN]
Function NewMap:Int(Mapname:String, breite:Int, hohe:Int)
Local Datei:String = "maps\" + Mapname + ".map"

Local check:TStream = ReadStream(Datei)
If Not check

For Local i:Int = 0 To (hohe-1)
For Local j:Int = 0 To (breite-1)
For Local k:Int = 0 To 4
Map[j,i,k] = 512
Next
Next
Next

Local out:TStream = WriteFile(Datei)
If out
WriteInt out, breite
WriteInt out, hohe
For Local l:Int = 0 To (hohe-1)
For Local m:Int = 0 To (breite-1)
For Local n:Int = 0 To 4
WriteInt out, Map[m,l,n]
Next
Next
Next
CloseStream out
Return 1
Else
Return 0
EndIf
Else
CloseStream check
Return 2
EndIf

EndFunction


Wäre nett wenn da ma wer drüberschauen könnte. Habe mich schon halb totgesucht, kann den Fehler aber nicht finden.

greetz
FunkMonk
  • Zuletzt bearbeitet von FunkMonk am Do, Jul 14, 2011 2:43, insgesamt einmal bearbeitet

Midimaster

BeitragDo, Jul 14, 2011 1:01
Antworten mit Zitat
Benutzer-Profile anzeigen
existier wirklich das unterverzeichnis "maps" ?

bei mir läuft dein code. allerdings nur, wenn ich das verzeichnis maps erstellt habe. gibt es "maps" nicht, returned die Funktion 0 und es scheint so, als wäre das "If OUT" schief gelaufen.

Mein Tipp hierzu:

Während der Testphase immer DEBUGLOGs in den Code einbauen:

BlitzMax: [AUSKLAPPEN]
SuperStrict
Global Breite%=10 , Hohe%=10

Global map%[Breite,Hohe,5]

Print "Returned " + NewMap( "test", Breite, Hohe)

Function NewMap:Int(Mapname:String, breite:Int, hohe:Int)
Local Datei:String = "maps\" + Mapname + ".map"

Local dir% = ReadDir("maps\")
If Not dir RuntimeError "failed to read current directory"


Local check:TStream = ReadStream(Datei)
If Not check
Print "file not exist"
For Local i:Int = 0 To (hohe-1)
For Local j:Int = 0 To (breite-1)
For Local k:Int = 0 To 4
Map[j,i,k] = 512
Next
Next
Next

Local out:TStream = WriteFile(Datei)
If out
Print "write file"
WriteInt out, breite
WriteInt out, hohe
For Local l:Int = 0 To (hohe-1)
For Local m:Int = 0 To (breite-1)
For Local n:Int = 0 To 4
WriteInt out, Map[m,l,n]
Next
Next
Next
CloseStream out
Return 1
Else
Print "unable to create file"
Return 0
EndIf
Else
Print "file already exists"
CloseStream check
Return 2
EndIf

EndFunction
 

FunkMonk

BeitragDo, Jul 14, 2011 1:25
Antworten mit Zitat
Benutzer-Profile anzeigen
Das mapverzeichiss habe ich natürlich angelegt.

Habe mal deinen Code bei mir ausgeführt und Tatsache - er Funktioneiert.

Die Funktion scheint also in ordnung zu sein und der Fehler ist im restlichen Code zu suchen. (Hätt ich auch ma vorher drauf kommen können dass ganze mal außerhalb des Programms zu testen Rolling Eyes )

Den Tip mit dem Debug-log nehm ich mir auch mal zu herzen. Habe ich zwar schon öfter in deinen Beiträgen gelesen aber irgendwie gekonnt ignoriert.

Ich suche dann mal weiter.

Besten Dank
FunkMonk

Edit: Hab den Fehler gefunden - meine Input-Funktion hat keinen "sauberern" string erzeugt, so dass kein gültiger Dateiname erstellt werden konnte.
Nach anpassug der Input Funktion klappt alles.

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group