Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

 
 
Опции темы Поиск в этой теме Опции просмотра
  #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;
Ответить с цитированием
 


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 11:33.


 

Сайт

Форум

FAQ

Соглашения

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2025