Перейти к содержанию
Fire Monkey от А до Я
  • 0

Запись array of record в файл


xenon54

Вопрос

Всем привет!

Вопрос вроде бы легкий, но ....

 

Накидал пример в котором есть структура(простейшая), массив из этих структур, ну и запись/чтение массива структур в/из файл(а).

В процедуре чтения все идет на ура, проверяю в отладчике, все делается как надо. Как только строка переходит на "end" этой процедуры, выскакивает "Invalid pointer operation".

 

Кому лень качать, вот часть листинга:

type
  TXSession = record
    name : string;
    name2 : string;
  end;

  XRecordArray = array of TXSession;

......


class procedure TXSessionClass.ReadTXSessions(var AXArray: XRecordArray);
var
  FS : TFileStream;
  XSession : TXSession;
  i, arr_length : integer;
begin

  FS := TFileStream.Create( 'Sess_arr.txt', fmOpenRead );
  FS.Read(arr_length, SizeOf(integer));
  SetLength(AXArray, 0);
  for I := 0 to arr_length-1 do
  begin
    FS.Read(XSession, SizeOf(TXSession));
    SetLength(AXArray, Length(AXArray) + 1);
    AXArray[Length(AXArray)-1] := XSession;
    //AXArray := AXArray + [XSession];
  end;


  FS.Free;
  FS := nil;

end; //<-- Тут вываливается IPO

test.zip

Ссылка на комментарий

Рекомендуемые сообщения

  • 0

Вместо "string" в record нужно использовать "array [0..49] of char".

  TXSession = record
    name : array[0..49] of Char;
    name2 : array[0..49] of Char;
  end;

А вообще, не уверен что эта тема относится к FM, разве что для не мобильной платформы можно было бы использовать string[50].

Ссылка на комментарий
Гость
Эта тема закрыта для публикации ответов.
  • Последние посетители   0 пользователей онлайн

    • Ни одного зарегистрированного пользователя не просматривает данную страницу
×
×
  • Создать...