вот небольшой примерчик:
program test2;
uses
log,strings,sysutils;
type tobj1=object
first:double;
procedure blabla;virtual;abstract;
end;
tobj2=object(tobj1)
second:double;
end;
var obj:tobj2;
begin
programlog.logout('@first=$'+inttohex(longword(@obj.first),8));
programlog.logout('@second=$'+inttohex(longword(@obj.second),8));
programlog.done;
end.
в логе видим пропажу 8ми байтов, выравнивание вроде тут нипричем:
@first=$00418000
@second=$00418010
если second перекинуть в tobj1 тогда всё нормально:
@first=$00418000
@second=$00418008
в реальной программе разница еще больше (здесь infrustum:boolean последний элемент родительского объекта, ObjMatrix - первый наследуемого)
PGDBObjCircle.infrustum=$0248922E
PGDBObjCircle.ObjMatrix=$02489248
Нужно для runtime доступа к полям объектов из скриптов, в delphi все вроде работает, в fp соответственно нет
