Текущий архив: 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