gpt4 book ai didi

delphi - 如何从 TRttiType 实例化一个类?

转载 作者:行者123 更新时间:2023-12-03 14:46:17 26 4
gpt4 key购买 nike

我想创建一个表单,并将其类名作为字符串,which has been asked about before ,但我想使用 Delphi 的新 RTTI 功能,而不是调用 GetClass

通过这段代码,我得到了一个 TRttiType,但我不知道如何实例化它。

var
f:TFormBase;
ctx:TRttiContext;
lType:TRttiType;
begin
ctx := TRttiContext.Create;
for lType in ctx.GetTypes do
begin
if lType.Name = 'TFormFormulirPendaftaran' then
begin
//how to instantiate lType here?
Break;
end;
end;
end;

我也尝试过 lType.NewInstance 但没有成功。

最佳答案

您必须转换 TRttiTypeTRttiInstanceType类,然后使用 GetMethod 调用构造函数功能。

尝试这个示例

var
ctx:TRttiContext;
lType:TRttiType;
t : TRttiInstanceType;
f : TValue;
begin
ctx := TRttiContext.Create;
lType:= ctx.FindType('UnitName.TFormFormulirPendaftaran');
if lType<>nil then
begin
t:=lType.AsInstance;
f:= t.GetMethod('Create').Invoke(t.MetaclassType,[nil]);
t.GetMethod('Show').Invoke(f,[]);
end;
end;

关于delphi - 如何从 TRttiType 实例化一个类?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14742505/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com