Seite 1 von 2

Binäre Datei einlesen, String anhängen, wieder abspeichern

Verfasst: 18.07.2005 22:46
von Delle
Okay das macht man sicher mit OpenFile() ... und wie weiter?

Eine Schleife mit Read...(), aber welches genau für binäre Daten?

Vermisse so eine einfache Funktion wie in PHP:

$inhalt = implode("",file($datei));

Verfasst: 19.07.2005 00:57
von Icke
Ein kleines Beispiel. Ich hab eine JPG mal erweitert, das Ergebnis bleibt weiterhin ohne irgendwelche Symptome ausführbar...

Code: Alles auswählen

ReadFile(0,"d:\1.jpg")
CreateFile(1,"d:\2.jpg")

Repeat
  
  UseFile(0)
  a=ReadByte()
  
  UseFile(1)
  WriteByte(a)
  
Until Eof(0)


a$="--- Das hängen wir dran ---"

Repeat
  
  zaehler+1
  
  a=Asc(Mid(a$,zaehler,1))
  
  WriteByte(a)
  
Until a=0

CloseFile(0)

CloseFile(1)
Danach die Ergebnisdatei einfach mal mit Hex oder Texteditor öffnen und ans Ende schaun.

.

Verfasst: 19.07.2005 10:40
von Batze
Es gibt doch FileSeek() !
Warum so umständlich? :?

Code: Alles auswählen

OpenFile(0,"d:\1.jpg")
FileSeek(Lof())

a$="--- Das hängen wir dran ---"
WriteString(a$)

CloseFile(0) 
Edit: Wie bin ich nur auf Lof()-1 gekommen? :oops:

Verfasst: 19.07.2005 15:20
von ts-soft
>> FileSeek(Lof()-1)

Warum -1, Sicher ??

Verfasst: 19.07.2005 15:30
von Deeem2031
Also ich hab auch immer FileSeek(Lof()) benutzt (also ohne -1).
Ist meiner Meinung nach auch richtig. Wenn eine Datei 1 Byte groß ist und man ans Ende springen will, springt man an Stelle 1 und nicht 1-1 (0 ;) ), das wär ja das eine Byte was am Anfang steht.

Verfasst: 19.07.2005 15:43
von ts-soft
Deeem2031 hat geschrieben:Also ich hab auch immer FileSeek(Lof()) benutzt (also ohne -1).
Ist meiner Meinung nach auch richtig. Wenn eine Datei 1 Byte groß ist und man ans Ende springen will, springt man an Stelle 1 und nicht 1-1 (0 ;) ), das wär ja das eine Byte was am Anfang steht.
Danke, so mach ich es auch :allright: , wollte mich nur vergewissern

Verfasst: 19.07.2005 15:53
von redacid
Es gibt doch auch eof() (End of file), oder irre ich mich da? Wäre noch etwas eleganter, wie ich finde :)

Verfasst: 19.07.2005 15:59
von ts-soft
redacid hat geschrieben:Es gibt doch auch eof() (End of file), oder irre ich mich da? Wäre noch etwas eleganter, wie ich finde :)
EOF ist doch nur ein Flag, das #True ergibt wenn du das ende erreicht hast, du muß also durch die ganze Datei iterieren, was natürlich dauert. Zum anhängen von Daten wäre das umständlich und langsam :)

Nachtrag: ts-soft wahr 60 sekunden schneller als der düstere Drachen :D

Verfasst: 19.07.2005 16:00
von DarkDragon
redacid hat geschrieben:Es gibt doch auch eof() (End of file), oder irre ich mich da? Wäre noch etwas eleganter, wie ich finde :)
Das ist aber nur zum rausfinden, ob die aktuelle Position dem End of File entspricht. Deswegen hat ja die Diskussion angefangen ;) . FileSeek(Lof()) so mach ich das auch immer, wenn ich ans Ende will.

Verfasst: 19.07.2005 18:35
von redacid
oh Mist, ich dachte, ich hätte im Hinterkopf, dass EOF() ein normaler Befehl ist, um eben an das Ende einer Datei zu hüpfen. Das kommt davon, wenn man seit Ewigkeiten nichts mehr programmiert hat... /:->