線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:1466
推到 Plurk!
推到 Facebook!

Ambiguity between ULONG_PTR and ...

尚未結案
Jack222
一般會員


發表:9
回覆:8
積分:3
註冊:2004-11-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-04-14 17:14:28 IP:61.222.xxx.xxx 未訂閱
遇到與 30832 類似的問題, 即同時用 TRegistry 及 Windows Media Player, 導致編譯時產生 Ambiguity between ULONG_PTR and Wmplib::tlb_ULONG_PTR , 但在 30832 內並未詳細解釋如何解決, 我原本的程式為:
    TRegistry *pReg = new TRegistry;
    pReg->RootKey = HKEY_CLASSES_ROOT;
改為:
    Registry::TRegistry *pReg = new Registry::TRegistry;
    pReg->RootKey = HKEY_CLASSES_ROOT;
之後, 問題還是存在, 有哪位大大知道如何改嗎? Thanks~
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-04-14 17:58:52 IP:61.66.xxx.xxx 未訂閱
引言: Ambiguity between ULONG_PTR and Wmplib::tlb_ULONG_PTR
這是屬於模稜兩可的狀況,compiler不知該選哪一個好 參考 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=67999 【BCB】【問題】請問Zeos和ADO不能和平共處? http://delphi.ktop.com.tw/topic.php?topic_id=27593 【BCB】【問題】不懂它所出現的錯誤問題 http://delphi.ktop.com.tw/topic.php?topic_id=45032 【問題】bcb5=>bcb6的問題
Jack222
一般會員


發表:9
回覆:8
積分:3
註冊:2004-11-30

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-04-15 09:53:19 IP:61.222.xxx.xxx 未訂閱
謝謝您的回應, 我知道這大概是 namespace 的問題, 所以宣告時加了 Registry:: , 但情況還是一樣, 而把 Header File 搬來搬去, 還是無法編譯成功.
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-04-15 10:38:14 IP:61.66.xxx.xxx 未訂閱
jack222你好    我做以下的動作編譯器會過  
 
//---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
#include 
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
    : TForm(Owner)
{
}
//---------------------------------------------------------------------------    void __fastcall TForm1::FormCreate(TObject *Sender)
{
    TRegistry *pReg = new TRegistry;
    pReg->RootKey = HKEY_CLASSES_ROOT;    }
而你的問題 Ambiguity between ULONG_PTR and Wmplib::tlb_ULONG_PTR 跟你寫 TRegistry *pReg = new TRegistry; pReg->RootKey = HKEY_CLASSES_ROOT; 有什麼關係,我不是很了解 你可以把你那段Code整個post上來嗎??
Jack222
一般會員


發表:9
回覆:8
積分:3
註冊:2004-11-30

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-04-15 11:00:06 IP:61.222.xxx.xxx 未訂閱
因為我有 Import ActiveX Control --> Windows Media Player (Version 1.0) 來用, 所以會多出 #include "WMPLib_OCX.h" , 而裡面或許也有用到 ULONG_PTR, 才會造成重名, 對於這個問題, 我暫時只能用
    pReg->RootKey = (HKEY)((LONG)0x80000000); // that is HKEY_CLASSES_ROOT
來解, 但畢竟這不是正統的解法.
blk5743
高階會員


發表:34
回覆:371
積分:236
註冊:2003-11-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-04-15 13:40:51 IP:61.66.xxx.xxx 未訂閱
ULONG_PTR看起來應該是unsinged long * 所以你需要用到ULONG_PTR的地方換成unsigned long *試試看
Jack222
一般會員


發表:9
回覆:8
積分:3
註冊:2004-11-30

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-04-15 14:02:15 IP:61.222.xxx.xxx 未訂閱
HKEY_CLASSES_ROOT 的定義為:
#define HKEY_CLASSES_ROOT           (( HKEY ) (ULONG_PTR)((LONG)0x80000000) )
位於 C:\Program Files\Borland\CBuilder6\Include\winreg.h 內, 直接去改 Header File, 應該不 妥, 我的程式裡面並沒有用到 ULONG_PTR, 而是當 Compiler 遇到
pReg->RootKey = HKEY_CLASSES_ROOT;
這一行時, 才會把 HKEY_CLASSES_ROOT 定義的內容 Assign 給 pReg->RootKey, 這時候 ULONG_PTR 就會出來亂囉.
系統時間:2024-05-19 13:42:03
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!