Главная страница
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.082 c
14-1129108254
Dush
2005-10-12 13:10
2005.10.30
Как узнать структуру файла?


2-1128164730
Yura32
2005-10-01 15:05
2005.10.30
Memo


1-1129025202
Alex_Mel
2005-10-11 14:06
2005.10.30
Как корректно создать несколько экземпляров формы...


3-1127094224
DimonS
2005-09-19 05:43
2005.10.30
Как правильно сложить несколько полей?


2-1128801558
Azeem
2005-10-08 23:59
2005.10.30
Псевдоним проекта