Показать сообщение отдельно
  #1  
Старый 18.02.2012, 13:33
nixel nixel вне форума
Начинающий
 
Регистрация: 12.12.2011
Адрес: Москва
Сообщения: 150
Версия Delphi: XE2-U4
Репутация: 131
По умолчанию Проблема при чтении record из потока

Добрый день, уважаемые форумчане.

Возникла проблема при чтении одного из полей записи, которая была предварительно слита в файл через TFileStream.

Суть:
Была record, полям которой присваивались значения некоторых переменных, а потом эта запись заливалась в файл.
В другом методе из этого файла считывались данные и заливались в эту же record. Все работало отлично и без нареканий, пока я не решил добавить в запись новое поле. Проблема возникла при чтении данных из файла - в это новое поле не пишется ничего, хотя все остальные поля прогружаются исправно.

Привожу кусок кода. Может быть замыленный взгляд пропустил какую-то мелочь. Заранее спасибо за помощь.

Код:
var
  Count: integer;  
  protocol: string= '0.04.02.00';
  ...

type
  RTempField= record //для справки в ней так же есть и массивы.
    ...
    count: integer;
    protocol: string; //вот проблемное поле. пробовал менять тип на integer (с изменением типа переменной разумеется) - результата не принесло.
    ...
  end;

procedure TMasField.SaveToFile(FileName: string);
var
  TempField: RTempField;
  FileData: TFileStream;
begin
  ...
  TempField.count:= Count;
  TempField.protocol:= protocol; //прогонял дебаггером - в поле записи значение стоит
  ...
  FileData:= TFileStream.Create(FileName, fmCreate);
  FileData.Write(TempField, sizeof(TempField));
  FileData.Free;
end;

procedure TMasField.LoadFromFile(FileName: string);
var
  FileData: TFileStream;
  TempField: RTempField;
begin
  FileData:= TFileStream.Create(FileName, fmOpenRead);
  FileData.Read(TempField, sizeof(TempField));
  FileData.Free;
  if (TempField.protocol) < (protocol) then //А вот здесь в поле записи уже стоит "", хотя должно быть загружено из файла.
    begin
      ...
    end;  
  Count:= TempField.count; //Тут все работает нормально.
  ...  
end;
Ответить с цитированием