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 в разделе под названием

Запись и чтение динамических массивов переменных нефиксированного размера

Может кто-нибудь пролить свет на то, почему это не правильно читает строки из файла?

0 ответов

Другие вопросы по тегам