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

Access violation 與 runtime error 216 at xxxxxxxx

答題得分者是:ccchen
hagar
版主


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

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-04-29 15:08:54 IP:202.39.xxx.xxx 未訂閱
原來程式運作無誤, 但使用者更改設定後 就會出現 Access violation 之類的錯誤訊息 將程式關閉的話, 就會出現一連中的 access violation 的訊息方塊 中間夾雜一兩個 runtime error 216 at xxxxxxxx 的訊息方塊 經 debug 後, 出現錯誤訊息的程式碼如下:
begin
  for i := 0 to xx do begin
    // ...
    for j := 0 to xx do begin
      tmpStr := ''; // 這行出現錯誤訊息
      // ...
      tmpStr := ''; // 後來加上這一行就 ok
    end;
  end;
end;
在 debug 時, 中斷點設在紅色那行 滑鼠停在紅色那行時, debug 資訊為 tmpStr = Inaccessible value 後來在 for j 迴圈最後再加上 tmpStr := ''; 這一行之後 就不再出現錯誤訊息了. 請教大家, 什麼情況會造成這樣的錯誤? 是中毒嗎?(運行程式的 PC 上有裝防毒軟體) 謝謝. --- 每個人都是一本書
Justmade
版主


發表:94
回覆:1934
積分:2030
註冊:2003-03-12

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-04-29 16:39:17 IP:218.16.xxx.xxx 未訂閱
我以前也試過類似的...在莫明奇妙的地方出錯,加減些莫明奇妙的 CODE 就會改變出錯的變數甚至變成沒事。 那有可能是你有些 memory 取了沒 Free 而剛好這個 TmpStr 就是取到該位置,當你加多句 TmpStr = 後 Memory Allocation 變了第一句又不會取到那位置所以沒事...(不過可能到另一個變數出事) 我那次在幾千行程式找了很久終於找到是其中一個 PChar 取了記憶體後沒 Free, 加上 Free 的程式碼便一直沒事了... 也不知道是不是這個原因,只是說說我以前的經驗罷。
ccchen
版主


發表:61
回覆:940
積分:1394
註冊:2002-04-15

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-04-30 10:10:31 IP:218.163.xxx.xxx 未訂閱
基本上應該就是Memory錯誤 Memory錯誤時, Debug所追到之位置很難說, 有時也許你加幾個Showmessage或幾個assign ,好像bug就不見了. 不過錯誤仍在不知什麼時候要發生 我也常碰到, 最後繐是能找到 仔細查查所有的Create, allocate及free吧 否則用debug觀查所有Register及memory狀態看pointer指到那去了恐怕也很難 想想如果有一個pointer, 未allocate或已free而未assing成nil, 他可指向任何位置, 是否會造成衝突是不一定的
系統時間:2024-11-23 7:43:43
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!