rtti

    5热度

    1回答

    是否可以使用接口类型约束来检查具有泛型类型的实例的RTTI信息?现在的问题是可能有点暧昧,所以我创建了一个示例控制台应用程序,以显示我想要做的事: program Project3; {$APPTYPE CONSOLE} uses RTTI, SysUtils, TypInfo; type TMyAttribute = class(TCustom

    1热度

    1回答

    我有一个类型列表TList<TForm>。我要投它,并把它作为TList<TObject>这样的: procedure mainForm.testCast; var listT: TList<TForm>; listW: TList<TObject>; obj: TObject; begin listT := TList<TForm>.create;

    4热度

    1回答

    我想用RTTI替换属性的getter/setter。 我知道你可以通过TPropInfo.SetProc/GetProc访问getter setter,我知道这些字段指向不同的数据,具体取决于属性是使用虚拟方法,直接字段访问还是静态方法。 我很有兴趣用自定义虚拟方法替换指向虚拟方法的propertiy setters/getters。 TRttiInstanceProperty(RttiPrope

    13热度

    1回答

    这个有效的代码包含更新的Delphi版本吗? // handle HTTP request "example.com/products?ProductID=123" procedure TMyRESTfulService.HandleRequest([QueryParam] ProductID: string); 在此示例中,变量 “产品ID” 是由于与[QueryParam]。如果这是De

    2热度

    2回答

    我正在使用Delphi XE编写一个基类,这将允许降序类通过应用注释映射dll方法。但是,我得到一个类型转换错误,这是可以理解的。 本质的基类应该是这样的: TWrapperBase = class public FLibHandle: THandle; procedure MapMethods; end; procedure TWrapperBase.MapMetho

    4热度

    1回答

    德尔福RTTI设定值I类有这样 TuserClass = class private FUtilisateurCode: string; FUtilisateurCle: string; public procedure SetCodeInt(ACode: string; AValue: string); published [CodeInt('2800')] property U

    7热度

    1回答

    只是为了确保,因为我已经发现尚未产生它的情况下,我也不要忽略一个奇怪的边缘情况,但我想,以确保: 是否有任何德尔福的版本,可以发出包含RTTI tkUnknown为TTypeKind? 如果是这样的: 任何文件的参考? 什么类型会产生它? 在当前的Delphi XE5 RTL,唯一的地方,我能找到处理tkUnknown是TValue,但我还没有发现在RTL,设置了一个TValue含有tkUnkno

    0热度

    2回答

    首先: 我问这个问题只是出于好奇,了解什么是真正发生。我不使用这样的生产代码,所以我不想想看到答案,提出了另一种解决方案。 有了这个代码: class Base{ public: virtual void copy(){} }; class Derived: public Base{ public: void copy(){ Base a1;

    0热度

    1回答

    我注意到OuterClass上的手动指定typedef代价过高,有时会导致令人尴尬的错误。 所以我决定在OuterClass上做一个复制贴友好的typedef。 这是我的了: #include <type_traits> struct A{ typedef A NextOuterClass; typedef A SelfClass; struct B{

    1热度

    1回答

    我最近在搞vtable,以便更好地理解编译器/进程需要做什么来实现类和继承。 这就是我试图完成: 我想写我自己的小虚函数表,以强制对象的静态行为: class A { public: virtual void foo() { cout << "A.foo()" << endl; } virtual void bar() { cout << "A.bar()" << endl;