[問題] 指標轉換有問題

看板C_and_CPP作者 (泰勒大師)時間13年前 (2011/06/14 23:07), 編輯推噓0(0024)
留言24則, 3人參與, 最新討論串1/1
開發平台(Platform): (Ex: VC++, GCC, Linux, ...) VC++ 額外使用到的函數庫(Library Used): (Ex: OpenGL, ...) MFC 問題(Question): int index; CMyFilm *film; index=pListBox->GetCurSel(); film=(CMyFilm*)(pListBox->GetItemDataPtr(index)); 我用中斷點發現 在(pListBox->GetItemDataPtr(index))這部分 是得到一個正確的記憶體位置 但是經過轉換後 film顯示0x000000 我的游標移到(pListBox->GetItemDataPtr(index))時 的確有顯示一個非0的記憶體位置 是因為轉換錯誤嗎?? 餵入的資料(Input): 預期的正確結果(Expected Output): 錯誤結果(Wrong Output): 程式碼(Code):(請善用置底文網頁, 記得排版) 補充說明(Supplement): -- ※ 發信站: 批踢踢實業坊(ptt.cc) ◆ From: 1.175.129.127

06/15 05:58, , 1F
我猜你看到的那個非0位置是 pListBox...
06/15 05:58, 1F

06/15 09:54, , 2F
不是耶 我是放在film上面顯示的
06/15 09:54, 2F

06/15 09:55, , 3F
喔喔 看錯你的意思
06/15 09:55, 3F

06/15 09:56, , 4F
我的非0值是pListBox->GetItemDataPtr(index)框框裡
06/15 09:56, 4F

06/15 09:56, , 5F
應該是沒錯
06/15 09:56, 5F

06/15 21:52, , 6F
看看pListBox->GetItemDataPtr(index) 顯示的值
06/15 21:52, 6F

06/15 22:28, , 7F
我後來看了看真的是GetItemDataPtr(index)回傳0
06/15 22:28, 7F

06/15 22:28, , 8F
我發現在ON_LBN_SELCHANGE和ON_LBN_DBLCLK上面
06/15 22:28, 8F

06/15 22:29, , 9F
GetCurSel()和GetItemDataPtr(index)都可以回傳正確值
06/15 22:29, 9F

06/15 22:30, , 10F
可是在我的BUTTON被按下去呼叫ON_BN_CLICKED裡的副函式
06/15 22:30, 10F

06/15 22:30, , 11F
GetCurSel()和GetItemDataPtr(index)就會失效 都是0
06/15 22:30, 11F

06/15 22:32, , 12F
是因為我用了dialogbar的關係系嗎
06/15 22:32, 12F

06/15 22:32, , 13F
dialogbar連顯示一個button都要額外的加入程式碼...
06/15 22:32, 13F

06/15 22:32, , 14F
我已經對他不太信任了..
06/15 22:32, 14F

06/16 08:14, , 15F
雖然我不太懂mfc,但是c的觀點來看,如果函式回傳null(0)
06/16 08:14, 15F

06/16 08:16, , 16F
當然就產生問題.寫程式是小心不蝕本的,可以用個if去判斷
06/16 08:16, 16F

06/16 08:16, , 17F
此函有成功嘛?
06/16 08:16, 17F

06/16 08:18, , 18F
if((film = ..略...) != NULL)
06/16 08:18, 18F

06/17 19:56, , 19F
if((film = ..略...) != NULL)是就不會出問題了
06/17 19:56, 19F

06/17 19:57, , 20F
不過底下的東西也就不能執行了 現在還是找不出原因
06/17 19:57, 20F

06/17 19:57, , 21F
暫時是放棄了 要準備期末考了 感謝幫忙
06/17 19:57, 21F

06/17 21:42, , 22F
= =沒啦,我打錯啦,我是教你檢查null拉,在決定要不要下去
06/17 21:42, 22F

06/17 21:43, , 23F
很多系統都有check的習慣啦,只是我想其他人會幫忙,才
06/17 21:43, 23F

06/17 21:43, , 24F
沒更正
06/17 21:43, 24F
文章代碼(AID): #1DztayGp (C_and_CPP)