Im enteffekt willst du ja einen String speichern der größer 255 Zeichen ist (vllt sogar variable.
Mach doch im Record eine Integer-Variable von der Länge. und dan schreibst du den String direkt rein.
Das geht mit
Stream.Write(String[1],Länge);
Also im record die länge des strings speichern und dann den String schreiben. Beim lesen erst record lesen und dann musst du den Speicher zum lesen in eine String-variable festlegen.
Hier eine kurze Funktion zum Prinzip.
Die länge ist halt den im record den du erst liesst.
Delphi-Quellcode:
//Schreiben
fs := TFileStream.Create(....,....);
try
// Erst die Länge
fs.Write(dwLen,SizeOf(dwLen)); // Besser SizeOf als direkt 4, falls man den Typ ändert
// Dann den eigentlichen Inhalt
fs.Write(sBuf[1],dwLen);
finally
fs.Free;
end;
// Lesen
fs := TFileStream.Create(....,....);
try
// Erst die Länge
fs.Read(dwLen,SizeOf(dwLen));
// Jetzt muss erst mal der Lesebuffer initialisiert werden
sBuf := StringOfChar(#00,dwLen); // oder SetLength(sBuf,dwLen), aber dann ist der Speicher nicht initalisiert
fs.Read(sBuf[1],dwLen);
Ich habe mich nun für deine Lösung entschieden. Das ganze habe ich noch erweitert und neben verschiedenen Werten auch noch ein Richedit Feld mit abgelegt. Das könnte ich zwar auch separat in einer Datei speichern, aber so habe ich das in einer einzigen Datei.
Die anderen Lösungen gehen bestimmt auch, aber das schien für micht das Einfachste zu sein.
Danke nochmals für die Info.