Dateien schreiben

Übersicht BlitzBasic Allgemein

Neue Antwort erstellen

TheProgrammer

Betreff: Dateien schreiben

BeitragSa, Apr 10, 2004 11:05
Antworten mit Zitat
Benutzer-Profile anzeigen
Hi.

Wenn ich Dateien schreibe, sieht das filgendermaßen aus:

Code: [AUSKLAPPEN]

file = Writefile(...)
 writeline file,...
 writeline file,...
 ...
closefile file


WriteLine fängt aber immer eine neue Zeile an.
Gibt es einen Befehl, der die Daten in der selben Zeile
weiter schreibt?
aktuelles Projekt: The last day of human being

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Apr 10, 2004 11:07
Antworten mit Zitat
Benutzer-Profile anzeigen
mit writestring
[BB2D | BB3D | BB+]

TheProgrammer

BeitragSa, Apr 10, 2004 11:10
Antworten mit Zitat
Benutzer-Profile anzeigen
Aha...Danke!!! Very Happy
aktuelles Projekt: The last day of human being

TheShadow

Moderator

BeitragSa, Apr 10, 2004 11:13
Antworten mit Zitat
Benutzer-Profile anzeigen
nope - code einen eigene funktion und benutze writebyte dazu...
AMD64 3500+ | GeForce6600GT 128MB | 1GB DDR | WinXPsp2
  • Zuletzt bearbeitet von TheShadow am Sa, Apr 10, 2004 13:22, insgesamt einmal bearbeitet

wunderkind

BeitragSa, Apr 10, 2004 12:42
Antworten mit Zitat
Benutzer-Profile anzeigen
Code: [AUSKLAPPEN]
; Save strings
f = WriteFile("text.txt") ; create file
WriteString(f,"STRINGNUMMEREINS")
WriteString(f,"stringnummerzwei")
CloseFile(f)

; Read saved strings
f = OpenFile("text.txt")
Print(ReadString(f))
Print(ReadString(f))
CloseFile(f)

While Not KeyHit(1)
Wend

End
 

Edlothiol

BeitragSa, Apr 10, 2004 13:04
Antworten mit Zitat
Benutzer-Profile anzeigen
Das funktioniert, ist jedoch nicht das gleiche wie WriteLine ohne Zeilenumbruch. WriteString speichert nämlich vor dem String noch seine Länge als normalen Integer. Um normalen Text ohne Zeilenumbruch zu schreiben, muss mans so machen wie TheShadow sage, z.B. so:
Code: [AUSKLAPPEN]
Function WriteText(txt$,file)
  For i = 1 To Len(txt)
    WriteByte Asc(Mid(txt$,i,1)), file
  Next
End Function
Müsste so klappen, ich habs aber nicht getestet. So wird jedes Byte einzeln in die Datei geschrieben.

wunderkind

BeitragSa, Apr 10, 2004 14:54
Antworten mit Zitat
Benutzer-Profile anzeigen
Damit fehlt dir aber die Länge, die du zum Laden wieder brauchst. WriteString() speichert sie gleich mit, die Länge (s. dein Beitrag).

Das Ganze müsste dann z.B. wie folgt nachgebildet werden:

Code: [AUSKLAPPEN]
f = WriteFile("test.txt")
WriteText("STRINGNUMMEREINS",f)
WriteText("stringnummerzwei",f)
CloseFile(f)

f = OpenFile("test.txt")
Print(ReadText(f))
Print(ReadText(f))
CloseFile(f)

WaitKey()

End


Function WriteText(txt$,f)
   WriteByte(f,Len(txt$))
   For i = 1 To Len(txt$)
      WriteByte(f,Asc(Mid(txt$,i,1)))
   Next
End Function


Function ReadText$(f)
   l = ReadByte(f)
   For i = 1 To l
      s$ = s$ + Chr$(ReadByte(f))
   Next

   Return s$
End Function
 

Edlothiol

BeitragSa, Apr 10, 2004 19:11
Antworten mit Zitat
Benutzer-Profile anzeigen
Arghl.
So einen Befehl gibts doch schon, (fast) das Gleiche macht WriteString. Nur speichert er die Länge als Int und nicht als Byte.
Nochmal seine Frage:
Zitat:
Gibt es einen Befehl, der die Daten in der selben Zeile
weiter schreibt?
Und dazu ist mein Code viel besser geeignet. Fertig.

Rallimen

Sieger des 30-EUR-Wettbewerbs

BeitragSa, Apr 10, 2004 19:55
Antworten mit Zitat
Benutzer-Profile anzeigen
Hier werden so viele Versionen gepostet ohne das jemand weiß,
was genau wie und warum gerade so oder so abgespeichert werden soll!
Oder habe ich da was verpasst?
Ein paar Info´s darüber würden da wirklich nicht schaden!
[BB2D | BB3D | BB+]
 

Edlothiol

BeitragSo, Apr 11, 2004 13:01
Antworten mit Zitat
Benutzer-Profile anzeigen
TheProgrammer hat Folgendes geschrieben:
WriteLine fängt aber immer eine neue Zeile an.
Gibt es einen Befehl, der die Daten in der selben Zeile
weiter schreibt?
Rolling Eyes

Neue Antwort erstellen


Übersicht BlitzBasic Allgemein

Gehe zu:

Powered by phpBB © 2001 - 2006, phpBB Group