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

有關SPCCOMM問題

答題得分者是:hagar
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-22 10:59:56 IP:211.20.xxx.xxx 未訂閱
請問大大 小弟使用SPCCOMM收送資料 但若是在收送到一半時便將程式關閉 此時雖然有在關閉前有偵測是否收送完成 但是偶爾還會發生EXE ACCESS VIOLATION AT ADDRESS XXXXX 請問這問題要如何解決呢???
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-22 15:51:43 IP:202.39.xxx.xxx 未訂閱
檢查您的收送過程中 是否有在程式關閉時, 什麼物件已經 Free 了 卻還存取它的情形? --- 每個人都是一本書
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-22 16:06:16 IP:211.20.xxx.xxx 未訂閱
在關閉前只用 MainForm所定義的變數與SPCCOMM的收送 並無用到其他的物件
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-04-22 16:25:11 IP:202.39.xxx.xxx 未訂閱
設中斷點來 debug, 看問題出在哪一行 再判斷該行為什麼出問題. --- 每個人都是一本書
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-04-22 16:35:07 IP:211.20.xxx.xxx 未訂閱
要設斷點似乎有點麻煩 因為此狀況是隨機並非每次都會出現 而且在某些PC偶爾會出現某些PC都不會出現 因此想請教是否有方法可防止此狀況產生
dllee
站務副站長


發表:321
回覆:2519
積分:1711
註冊:2002-04-15

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-04-22 20:46:39 IP:61.224.xxx.xxx 未訂閱
對不起,插個話... 請問您有沒有確實叫用 StopComm 先關掉 COM Port 通訊,再關閉程式呢?    如果有叫用 StopComm 應該不管是否有收送到一半的狀況都可以將程式關閉,因為在 StopComm 中已將收送資料的執行緒關閉了。    沒空更新的網頁... http://dllee.ktop.com.tw C及指標教學,計算機概論,資訊管理導論... http://big5.to/吃軟也吃硬 http://coolsite.to/ushells 介紹Shells,LiteStep,GeoShell....
------
http://www.ViewMove.com
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-04-23 08:16:25 IP:211.20.xxx.xxx 未訂閱
在關閉程式前 我有檢查是否最後一筆收送完成 然後使用 FLink.FComm->StopComm(); delete FLink.FComm; FLink.FComm = NULL; 才關閉程式
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-04-23 08:53:08 IP:202.39.xxx.xxx 未訂閱
delete FLink.FComm; 上面這行把物件 delete 了 但若收送資料的事件還在進行時, 就會導致 Access Violation 了 --- 每個人都是一本書
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-04-23 09:10:23 IP:211.20.xxx.xxx 未訂閱
但若不delete物件 下次使用是否可以在重新new FLink.FComm = new TComm( FormMain);
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-04-23 12:19:24 IP:202.39.xxx.xxx 未訂閱
引言: 但若不delete物件 下次使用是否可以在重新new FLink.FComm = new TComm( FormMain);
不是不要 delete 物件 而是在收送的那段式碼中 要判斷該物件是否為 nil 不為 nil 才做存取的動作. 沒有 delete 掉, 當然可以再重 new 一個 不過會造成 memory leak 的情形. --- 每個人都是一本書
lin11112
初階會員


發表:42
回覆:83
積分:25
註冊:2003-02-17

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-04-23 15:27:44 IP:211.20.xxx.xxx 未訂閱
謝謝提供我試試 另請問BCB是否有類似VB 提供ON ERROR RESUME NEXT 當有錯誤時能略過而不會出現錯誤的訊息
hagar
版主


發表:143
回覆:4056
積分:4445
註冊:2002-04-14

發送簡訊給我
#12 引用回覆 回覆 發表時間:2003-04-23 15:44:51 IP:202.39.xxx.xxx 未訂閱
引言: 謝謝提供我試試 另請問BCB是否有類似VB 提供ON ERROR RESUME NEXT 當有錯誤時能略過而不會出現錯誤的訊息
如下:
begin
  try
    // do something
  except
    on E: Exception do
      // handle exception
  end;
end;
--- 每個人都是一本書
系統時間:2024-04-20 0:51:17
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!