Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2005.10.30;
Скачать: CL | DM;

Вниз

Что вызывается первее - DefineProperties или published ?   Найти похожие ветки 

 
GuAV ©   (2005-10-07 23:33) [0]



 
Anatoly Podgoretsky ©   (2005-10-07 23:51) [1]

Непонял


 
jack128 ©   (2005-10-08 00:06) [2]

procedure TWriter.WriteProperties(Instance: TPersistent);
var
 I, Count: Integer;
 PropInfo: PPropInfo;
 PropList: PPropList;
begin
 Count := GetTypeData(Instance.ClassInfo)^.PropCount;
 if Count > 0 then
 begin
   GetMem(PropList, Count * SizeOf(Pointer));
   try
     GetPropInfos(Instance.ClassInfo, PropList);
     for I := 0 to Count - 1 do
     begin
       PropInfo := PropList^[I];
       if PropInfo = nil then
         Break;
       if IsStoredProp(Instance, PropInfo) then
         WriteProperty(Instance, PropInfo);
     end;
   finally
     FreeMem(PropList, Count * SizeOf(Pointer));
   end;
 end;
 Instance.DefineProperties(Self);
end;


 
GuAV ©   (2005-10-08 00:09) [3]

При чтении из потока и записи в поток наследника TPeristent автоматически читаются/записываются все published свойства; также вызывается DefineProperties для записи/чтения свойств "вручную".
Известен ли порядок этих двух действий при чтении, и если да, то в каком порядке они происходят ?


 
GuAV ©   (2005-10-08 00:12) [4]

jack128 ©   (08.10.05 0:06) [2]

Понял. Спасибо.

Чего-то вылетело из головы, что можно посмотреть исходники :-(


 
GuAV ©   (2005-10-08 00:34) [5]

Всё, разобрался/вспомнил. Прочитано будет в том же порядке что и записано, записано, как видно из [2], сначала в порядке следования в typeinfo published-свойства (в порядке от предка к наследнику), затем свойсва из defineproperties. И лучше не полагаться на этот порядок.


 
jack128 ©   (2005-10-08 01:46) [6]

GuAV ©   (08.10.05 0:34) [5]
И лучше не полагаться на этот порядок.

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



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

Текущий архив: 2005.10.30;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.056 c
1-1128852421
Аноним
2005-10-09 14:07
2005.10.30
Сообщение из трея


14-1128479169
КаПиБаРа
2005-10-05 06:26
2005.10.30
Задача про таракана


1-1128669787
Woolen
2005-10-07 11:23
2005.10.30
Access violation в TComboBox


8-1118082500
Grief
2005-06-06 22:28
2005.10.30
Сквозное окно


2-1128601635
koks
2005-10-06 16:27
2005.10.30
Как запретить одновременный запуск нескольких копий пронграммы