sonderzeichen bei writefile

Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Neue Antwort erstellen

 

battlegorge

Betreff: sonderzeichen bei writefile

BeitragDo, Dez 07, 2006 13:44
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo, ich habe mit writefile eine Zahl in eine datei geschrieben.
Die Zahl wird danach auch wieder richtig ausgelesen.
Aber wieso sieht die Textdatei so aus: Í[ ?

Code: [AUSKLAPPEN]

Strict

Graphics 640,480,0,60

Global highscore

f_write()
f_read()


While Not KeyHit(key_escape)

DrawText highscore,100,100

Flip
Cls

Wend


Function f_write()
   Local file:tstream
   
   file = WriteFile("highscore.dat")
      WriteInt file,123456789
   CloseFile(file)
End Function

Function f_read()
   Local file:tstream
   
   file = OpenFile("highscore.dat")
      highscore = ReadInt(file)
   CloseFile(file)
End Function

Jolinah

BeitragDo, Dez 07, 2006 13:48
Antworten mit Zitat
Benutzer-Profile anzeigen
Hallo

Ganz einfach, die Zahl wird binär geschrieben. Benutze WriteLine um eine Zeile in die Datei zu schreiben:

Code: [AUSKLAPPEN]
WriteLine stream, Zahl


WriteInt schreibt 4 einzelne Bytes in die Datei, welche die Zahl repräsentieren. Eine Textdatei hingegen ist ASCII- bzw. Unicode-codiert und interpretiert die 4 Bytes als 4 einzelne Zeichen Wink

PS:

Binär sind z.B. Spielstände meist gespeichert, so dass nicht jeder mit 'nem Texteditor einfach alles manipulieren kann... Das Textformat ist nützlich für INI-Dateien etc. braucht aber in der Regel mehr Speicher um das Selbe zu speichern. Die Zahl 123456 z.B. braucht im Textformat 6 Bytes (6 Zeichen), während sie Binär eben in einen Integer mit 4 Bytes passt.
 

battlegorge

BeitragDo, Dez 07, 2006 14:53
Antworten mit Zitat
Benutzer-Profile anzeigen
Danke, die Highscoreliste funktioniert jetzt Smile
Hier ist der code falls es jemanden interessiert.

Code: [AUSKLAPPEN]

Strict

Graphics 640,480,0,60

Global highscore:Int[10]

f_write()
f_read()


While Not KeyHit(key_escape)
Local counter:Byte

For counter = 0 To 9 Step 1
   DrawText highscore[counter],10,10+counter*10
Next

Flip
Cls

Wend


Function f_write()
   Local counter:Byte
   Local file:tstream
   
   For counter = 0 To 9 Step 1
      highscore[counter] = 100000 - counter*10000
   Next
   
   file = WriteFile("highscore.dat")
      For counter = 0 To 9 Step 1
         WriteLine file,highscore[counter]
      Next
   CloseFile(file)
End Function

Function f_read()
   Local counter:Byte
   Local file:tstream
   
   file = OpenFile("highscore.dat")
      For counter = 0 To 9 Step 1
         highscore[counter] = Int(ReadLine(file))
      Next
   CloseFile(file)
End Function

Neue Antwort erstellen


Übersicht BlitzMax, BlitzMax NG Beginners-Corner

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group