Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Что вызывается первее - DefineProperties или published ?


GuAV ©   (2005-10-07 23:33:00) 


jack128   (2005-10-08 01:46:00) [1]

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

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


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

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


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

jack128 ©   (08.10.05 0:06) [2]

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

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


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

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


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

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;


Anatoly Podgoretsky   (2005-10-07 23:51:00) [6]

Непонял


Наверх

Титульная страница Поиск, карта сайта Написать письмо