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;