![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Сохранение свойства типа array - линкер не пущает [D6, WinXP]
AZ © (2004-11-08 03:59:00)Не подскажет ли уважаемое сообщество, почему линкер после установки зарегистрированного компонента на форму
воспринимает DFM-файл как 16-и разрядный?
Делаю сохранение свойства в DFM как обычно:
procedure TShiftSett.DefineProperties(Filer: TFiler);
begin
inherited;
Filer.DefineProperty('ShChiefs',LoadShChiefs,SaveShChiefs,True);
end;
procedure TShiftSett.LoadShChiefs(Reader: TReader);
var
i: integer;
begin
for i:=0 to 3 do begin
FShChiefs[i].ChiefName:=Reader.ReadString;
FShChiefs[i].ShiftNo:=Reader.ReadInteger;
FShChiefs[i].ShTime:=Reader.ReadFloat;
end;
end;
procedure TShiftSett.SaveShChiefs(Writer: TWriter);
var
i: integer;
begin
for i:=0 to 3 do begin
Writer.WriteString(FShChiefs[i].ChiefName);
Writer.WriteInteger(FShChiefs[i].ShiftNo);
Writer.WriteFloat(FShChiefs[i].ShTime);
end;
end;
А линкер обижается и говорит, что 16-и битные DFM не поддерживает...
То что дело именно в сохранении свойства, показывет закомментирование вышеуказанных процедур.
AZ (2004-11-10 04:32:00) [1]>Юрий Зотов © (09.11.04 16:21) [1]
Жаль, что Вы не мой лечащий врач...
Ваш дагноз, как всегда, точен.
Большое спасибо.
Юрий Зотов (2004-11-09 16:21:00) [2]Попробуйте так:
procedure TShiftSett.LoadShChiefs(Reader: TReader);
var
i: integer;
begin
Reader.ReadListBegin;
for i := 0 to 3 do
begin
FShChiefs[i].ChiefName := Reader.ReadString;
FShChiefs[i].ShiftNo := Reader.ReadInteger;
FShChiefs[i].ShTime := Reader.ReadFloat;
end;
Reader.ReadListEnd;
end;
procedure TShiftSett.SaveShChiefs(Writer: TWriter);
var
i: integer;
begin
Writer.WriteListBegin;
for i := 0 to 3 do
begin
Writer.WriteString(FShChiefs[i].ChiefName);
Writer.WriteInteger(FShChiefs[i].ShiftNo);
Writer.WriteFloat(FShChiefs[i].ShTime);
end;
Writer.WriteListEnd;
end;
Если снова будет ругаться, попробуйте использовать Read/WriteListBegin и Read/WriteListEnd внутри циклов.