全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1043
推到 Plurk!
推到 Facebook!

Handle會遺失嗎或是改變型態?

尚未結案
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-12-03 16:48:06 IP:211.78.xxx.xxx 未訂閱
您好: 最近在寫程式發現程式有點問題.我有宣告一個Handle的變數. 經由一個FunctionGetHandle並回傳給程式,傳回的Handle, 確認不是invalid Handle,我再次確認Handle是否為我所要的Device 卻會回傳不是我所要的Device,但是在Get Handle裡卻是對的.而且如果在 傳Handle value的時候,前面再加上(HANLDE)-->做強制轉換,結果就正確了. 可是本來就已經定義此變數為Handle,為什麼會有這種情況呢?請指教..
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-12-03 22:52:36 IP:61.221.xxx.xxx 未訂閱
引言: 您好: 最近在寫程式發現程式有點問題.我有宣告一個Handle的變數. 經由一個FunctionGetHandle並回傳給程式,傳回的Handle, 確認不是invalid Handle,我再次確認Handle是否為我所要的Device 卻會回傳不是我所要的Device,但是在Get Handle裡卻是對的.而且如果在 傳Handle value的時候,前面再加上(HANLDE)-->做強制轉換,結果就正確了. 可是本來就已經定義此變數為Handle,為什麼會有這種情況呢?請指教..
palw 你好: 理論上來說應該是不會這樣子的,是否方便把你部分的程式碼貼上來呢?? (只需 要宣告、呼叫、被呼叫 function 的介面、傳回的寫法...這幾個部分) 小弟我 來看看 --
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-12-11 09:57:05 IP:211.78.xxx.xxx 未訂閱
RaynorPao您好,      抱歉這麼久才將程式放上來,程式主要有兩個CPP,第一個是Main Form,      第二個是usbchk-->提供Function讓Main Form呼叫.並在usbchk內宣告        DeviceHandle為全域變數.   
 
//============================usbchk部分程式碼=======================
 for(i=0;i<25;i  ){
   if(Dflag&0x01){
     TempHANDLE=OpenDeviceHANDLE(WhichDevice);
       if(TempHANDLE != INVALID_HANDLE_VALUE){
         if(CheckDevice(TempHANDLE)==true){
           DeviceHandle = TempHANDLE ;
           break;
         }
         else{
           CloseHandle(TempHANDLE);
         }
       }
   }
   Dflag = Dflag>>1;
   WhichDevice  ;
 }
//==================End Usbchk=====================================
//==================Main Form===================================
  呼叫CheckDevice再次確認Handle是正確的
  CheckDevice(DeviceHandle)結果會等於False
  但是如果在CheckDevice((Handle)DeviceHandle)結果會等於True
//==========================End Main==============================
RaynorPao
版主


發表:139
回覆:3622
積分:7025
註冊:2002-08-12

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-12-11 10:11:19 IP:203.73.xxx.xxx 未訂閱
引言: RaynorPao您好, 抱歉這麼久才將程式放上來,程式主要有兩個CPP,第一個是Main Form, 第二個是usbchk-->提供Function讓Main Form呼叫.並在usbchk內宣告 DeviceHandle為全域變數.
 
//============================usbchk部分程式碼=======================
 for(i=0;i<25;i  ){
   if(Dflag&0x01){
     TempHANDLE=OpenDeviceHANDLE(WhichDevice);
       if(TempHANDLE != INVALID_HANDLE_VALUE){
         if(CheckDevice(TempHANDLE)==true){
           DeviceHandle = TempHANDLE ;
           break;
         }
         else{
           CloseHandle(TempHANDLE);
         }
       }
   }
   Dflag = Dflag>>1;
   WhichDevice  ;
 }
//==================End Usbchk=====================================
//==================Main Form===================================
  呼叫CheckDevice再次確認Handle是正確的
  CheckDevice(DeviceHandle)結果會等於False
  但是如果在CheckDevice((Handle)DeviceHandle)結果會等於True
//==========================End Main==============================
palw 你好:
(1)請問?? 有這種型態嗎??「Handle」?? 好像是這個樣子吧??「HANDLE」
(2)如果在 Form class 的範圍之內,寫 Handle 應該是代表 Form 的 Handle
   吧??
(3)建議你再重新、仔細檢查你的程式碼看看
    -- 
        
------
-- 若您已經得到滿意的答覆,請適時結案!! --
-- 欲知前世因,今生受者是;欲知來世果,今生做者是 --
-- 一切有為法,如夢幻泡影,如露亦如電,應作如是觀 --
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-12-11 10:42:50 IP:211.78.xxx.xxx 未訂閱
Sorry,我寫錯了是HANDLE ,HANDLE DeviceHandle是定義在usbchk,Main Form include USBCHK
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-12-11 16:47:55 IP:211.75.xxx.xxx 未訂閱
這種問題還真的沒碰到過耶! 只是你能確定變數型態與Funtion回傳型態,參數型態都一致嗎? 有許多時候都是因為一時的不注意而導致莫名奇妙的問題.
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-12-11 17:03:09 IP:211.78.xxx.xxx 未訂閱
因為DeviceHandle為全域變數,而回傳的參數型態也都有進行確認是一致的...
jcjroc
高階會員


發表:21
回覆:279
積分:115
註冊:2002-09-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-12-12 12:33:47 IP:211.75.xxx.xxx 未訂閱
方便把整個程式Post上來嗎
palw
初階會員


發表:45
回覆:89
積分:26
註冊:2003-02-24

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-12-12 13:43:35 IP:211.78.xxx.xxx 未訂閱
ㄜ...抱歉 恐怕不方便.... 因為這個問題並不是每次都會出現,有時有有時又正常.所以就覺得很奇怪.
系統時間:2024-05-04 20:11:00
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!