我想从以前保存在数据库中的类型的名称(QualifiedName)创建类。但当我调用函数TRttiContext.FindType(' QualifiedName')时,我发现只有几个类
注意:所有类都是公共的,所有类都在同一个单元中,AllClasses从TMyClassParent继承
Procedure TMyObjects.Load;
var s, typeName : string;
ctx : TRttiContext;
t: TRttiInstanceType;
tp: TRttiType;
o: TMyClassParent;
begin
ctx := TRttiContext.Create;
try
While not Table.Eof do begin
typeName := format('%s.%s',[FieldByName('UnitName').AsString,FieldByName('TypeName').AsString]);
if trim(typeName) <> '' then begin
tp := ctx.FindType(typeName);
///..here when I debug some Types exists ( tp <> nil ) and for others tp = nil...
t := tp as TRttiInstanceType;
if Assigned(t) then begin
o := t.MetaClassType.Create;
//...
///...
end;
///....
end;
//....
finally
ctx.free;
end;
有没有人可以帮助我,我正在使用Delphi XE5并抱歉我的英语..
答案 0 :(得分:1)
我解决了这个问题,实际上只需要至少使用一次类或在程序中的任何地方引用类就足以确保编译器/链接器不能从可执行文件中删除它{{3}感谢All