Hallo,
einen Huge-String kannst Du nicht in einem File Of Record bzw typisierten Datei verwenden. Das geht nur mit ShortStrings oder Strings fester Länge.
Du solltest es mit Streams versuchen. Für Deine Frage wäre TFileStream das richtige. Leider hat auch TFileStream von haus aus keine Methoden zum lesen und schreiben von String. Macht aber nix. Mit den folgenden Nachfahren ist das kein Problem:
Delphi-Quellcode:
nit Streaming;
interface
uses Sysutils, Classes;
Type
TMemoryStreamExt = class(TMemoryStream)
public
procedure WriteStringToStream(aStr : String);
function ReadStringFromStream : String;
end;
TFileStreamExt = class(TFilestream)
public
procedure WriteStringToStream(aStr : String);
function ReadStringFromStream : String;
end;
implementation
{ TFileStreamExt }
procedure TFileStreamExt.WriteStringToStream(aStr : String);
var
aStrLen : Integer;
begin
aStrLen:=Length(aStr);
WriteBuffer(aStrLen,SizeOf(Integer));
WriteBuffer(Pointer(aStr)^,aStrLen);
end;
function TFileStreamExt.ReadStringFromStream: String;
var
aStrLen : Integer;
begin
ReadBuffer(aStrLen,SizeOf(Integer));
SetLength(Result,aStrLen);
ReadBuffer(Pointer(Result)^,aStrLen);
end;
{ TMemoryStreamExt }
function TMemoryStreamExt.ReadStringFromStream: String;
var
aStrLen : Integer;
begin
ReadBuffer(aStrLen,SizeOf(Integer));
SetLength(Result,aStrLen);
ReadBuffer(Pointer(Result)^,aStrLen);
end;
procedure TMemoryStreamExt.WriteStringToStream(aStr: String);
var
aStrLen : Integer;
begin
aStrLen:=Length(aStr);
WriteBuffer(aStrLen,SizeOf(Integer));
WriteBuffer(Pointer(aStr)^,aStrLen);
end;
end.