[GELÖST] WriteByte schreibt nur [nul]?

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

CO2

ehemals "SirMO"

Betreff: [GELÖST] WriteByte schreibt nur [nul]?

BeitragMo, Jul 09, 2012 2:30
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo,
irgendwie bin ich diese Woche auf dem Kriegspfad mit BlitzMax Very Happy
Spaß beiseite: Ich habe ein Problem mit BlitzMax. Ich möchte in eine Datei Bytes schreiben. Dazu diese Funktion: BlitzMax: [AUSKLAPPEN]
Function ConvertIt(Image:TPixmap, Output:String)
Local mapdata:TStream = WriteFile(Output)
WriteInt(mapdata, (Image.width - 1))
WriteInt(mapdata, (Image.height - 1))
Local compression:Int
If(CountList(RegelList) < 256)
compression = 1
Else
compression = 0
EndIf
For Local x:Int = 0 To (Image.width - 1)
For Local y:Int = 0 To (Image.height - 1)
If(compression = 1)
WriteByte(mapdata, Byte(GetTileID(Image, x, y)))
Else
WriteInt(mapdata, GetTileID(Image, x, y))
EndIf
Next
Next
CloseFile(mapdata)
End Function

(Zur Erklärung: - Image: Das in einer Pixmap gespeicherte Bild
- Output: Output-Pfad
- compression: Sollten weniger als 256 Einträge in einer Liste sein, werden bytes in die Datei geschrieben, sonst Ints.
- GetTileID(): Es gibt einen Typ "Regel". In diesem sind die R, G, B-Werte gespeichtert, sowie dem entsprechenden Tile. Nun wird über diese funktion einfach der rgb-wert abgefragt und dann das tile rausgesucht und in die datei geschrieben.)

wenn ich die funktion ausführe, stehen 100 nullen drin. Warum?

P.S.: - GetTileID() Liefert das richtige ergebnis.
- Writefile() Ist anscheinend auch nicht die fehlerquelle - die datei wird ja geschrieben
- Ausser Wirtebyte() bleibt nicht mehr viel übrig
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 Mo, Jul 09, 2012 12:34, insgesamt einmal bearbeitet

Midimaster

BeitragMo, Jul 09, 2012 7:35
Antworten mit Zitat
Benutzer-Profile anzeigen
was schreibt den der Debugger, wenn du mal direkt hinter ie WriteByte() bzw WriteInt eineAusgabezeile setzt?

Beispiel:
BlitzMax: [AUSKLAPPEN]
		For Local y:Int = 0 To (Image.height - 1)
If(compression = 1)
WriteByte(mapdata, Byte(GetTileID(Image, x, y)))
Print "Bei Y="+ y + " ist Byte=" + Byte(GetTileID(Image, x, y))
Else
WriteInt(mapdata, GetTileID(Image, x, y))
Print "Bei Y="+ y + " ist Int=" + Byte(GetTileID(Image, x, y))
EndIf
Gewinner des BCC #53 mit "Gitarrist vs Fussballer" http://www.midimaster.de/downl...ssball.exe
 

CO2

ehemals "SirMO"

BeitragMo, Jul 09, 2012 12:31
Antworten mit Zitat
Benutzer-Profile anzeigen
Er gibt immer die richtige TileID aus... Er schreibt diese nur falsch in die Datei...

EDIT:
Hat sich erledigt, ich habe ausversehen immer in die falsche Datei reingeschaut... Embarassed
Entschuldigung.
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

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group