Underlig fejl ved RTTI (D2009)
Overordnet er opgaven at gemme en samling komponenter på en form, eksempelvis knapper og combobokse på et TPanel. Jeg flytter komponenternes owner over på panelet og bruger TFiler til at gemme og læse, men jeg mangler de events der er koblet op. Det forsøger jeg med denne procedure:var
ti: PTypeInfo;
List: PPropList;
method: TMethod;
Count, i: integer;
ObjName, EvtName, MetName: string;
begin
ObjName := aControl.Name;
ti := PTypeInfo(aControl.ClassInfo);
Count := GetPropList(ti, tkMethods, nil);
GetMem(List, Count * SizeOf(PPropInfo));
try
GetPropList(ti, tkMethods, List);
for i := 0 to Count - 1 do
begin
EvtName := string(List[i]^.Name);
method := GetMethodProp(aControl, EvtName);
if assigned(method.Code) and assigned(method.Data) then
begin
MetName := MethodName(method.Code);
Add(TEventData.Create(ObjName,EvtName,MetName));
end;
end;
finally
FreeMem(List, Count * SizeOf(PPropInfo))
end;
end;
Data gemmes i et objekt så jeg kan håndtere det.
Det virker bare ikke. MetName er tom når det køres i klassen. Kører jeg selvsamme kode i en Button.OnClick, så kommer navnet.
Nogen der har et bud?