FindClass
简述
输入一个参数时,根据类名找到当前的类,返回找到类的指针,不是指向实例对象。
输入两个参数时,得到强制类型的对象:FindClass(“abcd”,aObject),返回强制对象aObject为abcd类。
与CLASS关键字不同,当不存在指定的类的时候,或者不是指定对象的父类时,并不抛出异常,而是返回一个整数0。
FindClass(className:String[,obj:object]):Class|object
| 名称 | 类型 | 说明 |
|---|
| ClassName | String | 类名 |
| obj | ComObj | 可选参数,实例对象 |
| 返回值 | | 类的指针,不是指向实例对象。
或得到强制类型的对象。 |
范例01:通过查找类运行类方法
示例:
classA :=FindClass("A");
classA指向了类A,可以通过ClassA调用A的共享方法。但是不能调用实例方法,因为ClassA没有指向实例对象。
//有类:
Type ClassA=class()
class function fucA();
begin
return "ClassA";
end;
end;
//调用:
return findclass("ClassA").fucA();
返回:ClassA
范例02:将实例对象强制转成指定父类的实例
//有父类:
Type ClassA=class()
function fuc();virtual;
begin
return "ClassA";
end;
end;
//有子类:
Type ClassB=class(ClassA)
function fuc();virtual;
begin
return "ClassB";
end;
end;
//调用:
objb:=new ClassB();
obj:= findclass("ClassA",objb);//将objb对象强制转换成ClassA的实例对象
return obj.fuc();
返回:ClassA