Главная страница
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.028 c
3-1125345031
Piter
2005-08-29 23:50
2005.10.30
Коннект к базе в дополнительном потоке


3-1126973127
Tonich
2005-09-17 20:05
2005.10.30
Числа в базе данных


14-1128720387
Kerk
2005-10-08 01:26
2005.10.30
Китайский спам


14-1128676603
~viper~
2005-10-07 13:16
2005.10.30
Создание установочного CD


2-1128576239
mariya_mezenceva
2005-10-06 09:23
2005.10.30
карта