gpt4 book ai didi

delphi - 如何判断一个 TClass 是否派生自另一个 TClass?

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

我正在尝试做这样的事情:

function CreateIfForm ( const nClass : TClass ) : TForm;
begin
if not ( nClass is TFormClass ) then
raise Exception.Create( 'Not a form class' );
Result := ( nClass as TFormClass ).Create( Application );
end;

这会产生错误“运算符不适用于此操作数类型”。我使用的是 Delphi 7。

最佳答案

首先,您应该检查是否可以更改函数以仅接受表单类:

function CreateIfForm(const nClass: TFormClass): TForm;

并绕过类型检查和转换的需要。

如果这不可能,您可以使用 InheritsFrom :

function CreateIfForm(const nClass: TClass): TForm;
begin
if not nClass.InheritsFrom(TForm) then
raise Exception.Create('Not a form class');
Result := TFormClass(nClass).Create(Application);
end;

关于delphi - 如何判断一个 TClass 是否派生自另一个 TClass?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8228581/

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