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

請問assert問題?

答題得分者是:mephise
mitchellhu
一般會員


發表:23
回覆:53
積分:15
註冊:2007-06-12

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-11-08 00:21:30 IP:123.204.xxx.xxx 訂閱
今日為了multithread問題,google一篇不錯的文章http://www.midnightbeach.com/jon/pubs/MsgWaits/MsgWaits.html
並附有範例,但在範例中有一段程式如下:

constructor TStopStartThread.Create;
begin
Event := CreateEvent(Nil, True, False, Nil);
// API call is smaller and simpler than Delphi wrapper
Assert(Event <> null);
Waiting := False;
Aborted := False;
inherited Create(True); // Create a suspended thread
end;

其中Assert(Envent<> null);此行編譯報錯:[DCC Error] SynchedThreads.pas(200): E2003 Undeclared identifier: 'null'
Event 是一個handle, Assert(Envent<> null) 這行的用意 應該是要確保 Event 確實存在,如非時會觸發assert的系統報錯通知吧
我實在想不出來這句有什麼地方錯了 為什麼 null會被判成Undeclared identifier?
請大大指引迷津 感恩

編輯記錄
mitchellhu 重新編輯於 2010-11-07 09:23:47, 註解 無‧
mitchellhu 重新編輯於 2010-11-07 09:24:16, 註解 無‧
mephise
高階會員


發表:4
回覆:149
積分:205
註冊:2004-02-09

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-11-08 11:12:01 IP:60.250.xxx.xxx 訂閱
我猜那位老兄沒測試就把程式放上來了

根據 MSDN 的內容, CreateEvent 如果失敗會傳回 "NULL", 不過那是在MSDN裡
在他的程式裡是用 THandle 來承接的, 所以要改成 Event <> 0 就OK了
------
Mephise Chen
前興德工程師
mitchellhu
一般會員


發表:23
回覆:53
積分:15
註冊:2007-06-12

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-11-09 00:47:20 IP:123.204.xxx.xxx 訂閱
感謝您的解答, 改成<>0後 已可編譯。
系統時間:2024-05-08 6:44:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!