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

Delphi 7 + Indy + UDPServer 的問題

答題得分者是:jaya
雪豆豆
一般會員


發表:19
回覆:22
積分:13
註冊:2002-08-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2002-11-26 17:34:59 IP:140.134.xxx.xxx 未訂閱
當 UDPServer 接收到資料跑了類似 showmessage 這樣的 function 那似乎 UDPServer 就會卡住不在繼續進行運作了 例如 procedure TfrmServer.UDPServerUDPRead(Sender: TObject; AData: TStream; ABinding: TIdSocketHandle); var CommStr: TStringStream; begin CommStr := TStringStream.Create(''); CommStr.CopyFrom(AData, AData.Size); ShowMessage(CommStr[0]); CommStr.Free; end; 那下一個封包就會進不來.. 就停留在上一次 ShowMessage 那邊 除非把 ShowMessage 視窗關掉才會繼續進行 不知道有沒有人可以解決這個問題阿?
jaya
初階會員


發表:9
回覆:70
積分:30
註冊:2002-05-22

發送簡訊給我
#2 引用回覆 回覆 發表時間:2002-11-26 18:03:48 IP:211.21.xxx.xxx 未訂閱
用了Showmessage,程式就會停在那裡 在按掉之前如果有新的訊息進來,不就鬧塞車了? 建議不要用Showmessage. 如果堅持要秀在畫面上,不妨改用Memo元件, 將收到的訊息都附加到Memo裡; 如果是Service型態的話,就寫到Log檔裡.
雪豆豆
一般會員


發表:19
回覆:22
積分:13
註冊:2002-08-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2002-11-27 09:18:35 IP:140.134.xxx.xxx 未訂閱
問題是. 是要類似 MSN 這樣. 有訊息進來要 alert 視窗 平常是最小化到右下角. 所以根本看不到視窗的... 我有試過用一個視窗做.show 或是 .showmodal 但是都怪怪的.. 跳出來的視窗都沒有畫完就卡在那邊畫面白白的
jaya
初階會員


發表:9
回覆:70
積分:30
註冊:2002-05-22

發送簡訊給我
#4 引用回覆 回覆 發表時間:2002-11-27 11:04:20 IP:211.21.xxx.xxx 未訂閱
剛好,我也有寫過這類型的程式,只是沒有縮小放到時鐘那邊. 我的方法是先將訊息存入檔案裡,讓UDPServer的工作儘快結束. 再開一個 Form ,讀取之前存入的訊息,然後秀出來. 至於那個存放訊息的檔案,我是用資料表存放.這樣就連歷史訊息都有啦! 如些一來,訊息再多也不怕 ^^ 至少,目前收了上千個訊息是ok的. 用程式測試,模擬五台PC同時丟訊息進來各一萬次也是ok的.
雪豆豆
一般會員


發表:19
回覆:22
積分:13
註冊:2002-08-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2002-11-27 23:52:27 IP:61.223.xxx.xxx 未訂閱
我解決了.. 謝謝 jaya 的提示 我後來設定一個共用變數 MessageStr 當有訊息進來時就把讀到的訊息寫到 MessageStr 中 在加入一個 Timer.. 當 MessageStr <> '' 時就 ShowMessage 秀出來就好嚕
系統時間:2024-04-26 16:22:21
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!