Вниз
Скачать: CL | DM;

Сохранение свойства типа array - линкер не пущает   Найти похожие ветки 

 
AZ ©   (2004-11-08 03:59) [0]

Не подскажет ли уважаемое сообщество, почему линкер после установки зарегистрированного компонента на форму
воспринимает 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 не поддерживает...
То что дело именно в сохранении свойства, показывет закомментирование вышеуказанных процедур.


 
Юрий Зотов ©   (2004-11-09 16:21) [1]

Попробуйте так:

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 внутри циклов.


 
AZ ©   (2004-11-10 04:32) [2]

>Юрий Зотов ©   (09.11.04 16:21) [1]

Жаль, что Вы не мой лечащий врач...
Ваш дагноз, как всегда, точен.
Большое спасибо.



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.45 MB
Время: 0.027 c
2-1124192413
Настя
2005-08-16 15:40
2005.09.25
Запуск консольной программы с параметрами.


2-1123952654
Андрей Молчанов
2005-08-13 21:04
2005.09.25
Диалоги


1-1125317950
Cherrex
2005-08-29 16:19
2005.09.25
Как динамически добавить компонент на форму


1-1125986905
granni
2005-09-06 10:08
2005.09.25
OpenDialog


1-1125471494
Ксардас
2005-08-31 10:58
2005.09.25
Символ & перед именем файла




   Наверх