Delphi hat glücklicherweise einen Stringtyp, der keine Probleme mit Hex-0 ($00) hat.
Deshalb kann man (sollte man) auch binäre Daten in einem Ansistring speichern.
Das hat folgende Vorteile:
* Ansistrings können dynamisch angelegt werden und werden von Delphi durch Compiler-Magik automatisch
entsorgt.
* ob man Textdateien lädt oder binäre Dateien ist egal; man verwendet die gleiche Technik
* ein String trägt seine Länge in sich - man braucht keine zusätzliche Längenvariable
Beispiel:
Delphi-Quellcode:
var
s : Ansistring;
a : char;
begin
s := FileToString('C:\datei.xyz'); // Datei komplett laden
// zwei Bytes tauschen
a := s[16];
s[16] := s[6];
s[6] := a;
// direkt 2 Bytes setzen
s[1] := chr(200);
s[2] := chr($A2); // man kann auch hexadezimale Konstanten angeben
StringToFile('C:\datei.xyz', s); // veränderten String speichern
end;
FileToString() und StringTofile() gibt es hier:
http://www.delphipraxis.net/internal...=665975#665975
Falls man nur Teile der Datei laden und verändern möchte, kann man diese Funktionen um die Parameter Position und Laenge erweitern.
Die Alternative mit Assignfile, read, write, ... ist eine veraltete Technik aus der Anfangszeit von Pascal.