Delphi tfilestream.readbuffer не может прочитать строковое значение из файла
Я читаю и записываю данные из файла, используя файловый поток, но у меня проблемы с чтением строк из моего файла.
В тестовой программе VCL я написал:
procedure tform1.ReadfromFile4;
var
fs: TFileStream;
arrayString: Array of String;
i, Len1 : Cardinal;
// s : string;
begin
fs := TFileStream.Create('C:\Users\Joe\Documents\Delphi\Streamtest.tst',
fmOpenRead or fmShareDenyWrite);
Memo1.lines.clear;
try
fs.ReadBuffer(Len1, SizeOf(Len1));
SetLength(arrayString, Len1);
FOR i := 0 to Len1-1 do begin
fs.ReadBuffer(Len1, SizeOf(Len1));
SetLength(arrayString[i], Len1);
Fs.ReadBuffer(arrayString[i], Len1);
memo1.lines.add (arrayString[i]);
end;
finally
fs.free;
end;
end;
procedure tform1.WriteToFile4;
var
fs: TFileStream;
arrayString: Array of String;
Len1, c, i: Cardinal;
begin
Memo1.lines.clear;
SetLength(arrayString, 4);
arrayString[0] := 'First string in this Array';
arrayString[1] := 'the Second Array string';
arrayString[2] := 'String number three of this Array';
arrayString[3] := 'this is the fourth String';
fs := TFileStream.Create('C:\Users\Joe\Documents\Delphi\Streamtest.tst',
fmCreate or fmOpenWrite or fmShareDenyWrite);
try
c := Length(arrayString);
Fs.WriteBuffer(c, SizeOf(c));
for i := 0 to c-1 do begin
Len1 := Length(arrayString[i]);
fs.WriteBuffer(Len1, SizeOf(Len1));
if Len1 > 0 then begin
fs.WriteBuffer(arrayString[i], Len1);
end;
end;
finally
fs.free;
end;
end;
Действие кнопки "Сохранить" вводит четыре строки правильно, но кнопка "Загрузить" (readFromFile4) не может загрузить строки из файла. Используя список наблюдения, я обнаружил, что длины строк установлены правильно для каждой строки, но данные, к которым осуществляется доступ, не являются правильными значениями строки. Я верю, что добросовестно следую инструкциям на сайте: http://www.angelfire.com/hi5/delphizeus/customfiles.html] 1 в разделе под названием
Запись и чтение динамических массивов переменных нефиксированного размера
Может кто-нибудь пролить свет на то, почему это не правильно читает строки из файла?