我们可以使用SuperObject库通过名称调用某个对象的方法,并使用SOINvoker方法将其参数作为json字符串给出,就像在这个答案中一样
我想知道如何将创建的对象作为参数发送.我试着像发送它一样
LObjectList := TObjectList.Create;
LSuperRttiCtx := TSuperRttiContext.Create;
LSuperObjectParameter := LObjectList.ToJson(LSuperRttiCtx);
SOInvoke(MyInstantiatedObject, 'MyMethod', LSuperObjectParameter);
Run Code Online (Sandbox Code Playgroud)
但在MyMethod内部,LObjectList引用丢失了.
我究竟做错了什么?
superobject库可以在这里下载
我实际上是在尝试使用Rtti来实现泛型方法调用程序.它应该像这样工作:
所以我需要类引用以获取其Rtti信息并寻找我想要调用的方法.
如果没有实现我想要使用的类的类引用列表,有没有办法做到这一点?
我正在Delphi 2007上开发一个Windows应用程序,我正在使用"Ttaskdialog"组件.使用Windows XP它运行正常,但在Windows 7中,我收到以下消息:
TtaskDialog要求启用主题
任何线索如何修复它?
当我尝试在Delphi XE中编译具有5000+值的Enum类型的单元时,我收到此错误
[DCC错误] uCities.pas(5834):'TCity'的E2575 RTTI太大; 使用$ RTTI缩小范围或减小类型大小
我怎么解决这个问题?
像
{$WEAKLINKRTTI ON}
{$RTTI EXPLICIT METHODS([]) PROPERTIES([]) FIELDS([])}
Run Code Online (Sandbox Code Playgroud)
没有帮助.
提前致谢
如果我有一个TList,其中有许多不同记录类型的指针,我如何访问TList中的不同记录的值?
有没有办法获取那些引用的recods的记录类型或类型信息?
我目前正在使用Delphi XE.
我有类型的区别单位具有相同的名称,我有一个字符串中的单位名称.我需要访问该单元的特定类型.我怎么做?
例:
unit Unit1
type
TFooType = (
bar1,
bar2
);
Run Code Online (Sandbox Code Playgroud)
那么,我有另一个单位
unit Unit2
type
TFooType = (
foo1,
foo2,
foo3
);
Run Code Online (Sandbox Code Playgroud)
而且,在我的代码中的某处,我有一个字符串变量"UnitName",其中包含值"Unit1",我想通过变量访问Unit1的"TFooType"类型.
我正在使用Delphi 2007
对不起,我的英语不好.
提前致谢.
delphi ×6
rtti ×4
delphi-xe ×3
bison ×1
c ×1
delphi-2007 ×1
delphi-units ×1
enumeration ×1
gcc ×1
grammar ×1
pointers ×1
record ×1
reference ×1
reflection ×1
superobject ×1
vcl ×1
windows-7 ×1
yacc ×1