程式開發

Pointer of Delphi

最近寫程式使用到的功能,要從 Interface 及 Pointer 之間轉換型別。

不過網路上只找到物件及 Pointer 之間互相轉換的範例,簡單說就是先判斷是否為合法的物件指標,再判斷是否為我們想要的物件型別,內容如下:

TObject(Ptr) as TTargetClass

自己改寫成 Interface 版本:

IUnknown(Ptr) as ITargetInterface

另外,在寫程式的過程中有發現一個問題,取物件或 Interface 的指標時,不能使用 @ 前置符號,這樣取得的指標有可能是變數所在位址,而不是物件或 Interface 的所在位址,要特別小心。

Obj 為物件變數,錯誤範例:

Ptr := @Obj;

正確應該要這樣寫:

Ptr := Pointer(Obj);

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步瞭解 Akismet 如何處理網站訪客的留言資料