никаких проблем с длинными строками нет. код для строк любой возможной длины:
Код:
procedure Save;
var l:integer;
S:TFileStream;
begin
S:=TFileStream.Create('path', fmCreate);
l:=length(str); //запоминаем длину строки
S.Write(l, sizeof(integer)); //пишем ее в поток
S.Write(str[1], l); //пишем саму строку
end;
procedure Load;
var l:integer;
S:TFileStream;
begin
S:=TFileStream.Create('path', fmOpenRead);
S.Read(l, sizeof(integer)); //читаем длину строки
setLength(str, l); //задаем длину
S.Read(str[1], l); //читаем строку
end;
обязательно читать и писать надо в str[1] а не в str