Добрый день, уважаемые форумчане.
Возникла проблема при чтении одного из полей записи, которая была предварительно слита в файл через 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;