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

【問題】程式結束後產生錯誤

尚未結案
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-10-21 11:42:43 IP:211.75.xxx.xxx 未訂閱
程式結束後產生錯誤,但是編譯的那台不會其他電腦會!錯誤訊息如下
wameng
版主


發表:31
回覆:1336
積分:1188
註冊:2004-09-16

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-10-21 12:37:53 IP:61.222.xxx.xxx 未訂閱
您的問題,沒頭沒尾的。 實在很難叫人回答。 這台不會,那台會。表示環境的因素。 1. 是不是有些東西沒放過去.... 2. 作業系統是否相同,若不同察看一下指令。需要注意的地方。 3. 或者寫各記錄檔。判斷一下大概在哪一段程式碼所發生的。
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-10-21 13:04:15 IP:211.75.xxx.xxx 未訂閱
重新敘述問題,本人在自己的電腦完成一隻程式名叫wecam.exe,這隻程式在自 己的電腦執行沒問題,但是放在其他使用者的電腦執行,在結束程式時出現上列圖形的錯誤訊息,因為使用者的電腦都沒裝delphi所以無法測試,顧不知如何除錯
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-10-21 14:55:38 IP:211.75.xxx.xxx 未訂閱
更正問題出現之前訊息前會出現List index out of bounds(2) 且有裝delphi的不會出現問題沒裝的就會出現問題,有何方神聖能解惑
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-10-21 15:40:57 IP:220.135.xxx.xxx 未訂閱
通常有裝Delphi跟沒裝的差別是BDE的問題比較多, 程式裡有沒有使用任何資料庫? 你可以善用ShowMessage來做Debug, 看程式執行到哪一行指令時會出錯. 我不是高手, 高手是正在銀幕前微笑的人. 發表人 - miles 於 2004/10/21 15:42:44
------


我不是高手, 高手是正在銀幕前微笑的人.
paikang
一般會員


發表:1
回覆:7
積分:11
註冊:2002-10-08

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-10-21 16:20:45 IP:210.202.xxx.xxx 未訂閱
找看看在 Form.OnClose / Form.OnCloseQuery / Form.OnDestory 有沒有類似 ...[2] 或 ...[變數] 的程式碼. 列出來看看... http://paikang.myweb.hinet.net/index.html
------
我的簽名~
http://www.watermonster.org/phpBB/index.php
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-10-21 16:30:24 IP:211.75.xxx.xxx 未訂閱
有使用資料庫!你說的方法有範例可參考嗎?3q
Miles
尊榮會員


發表:27
回覆:662
積分:622
註冊:2002-07-12

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-10-21 17:12:39 IP:220.135.xxx.xxx 未訂閱
Hi yx_huang77 你好: 這是我在客戶那邊Debug常常用的方法, 因為對方沒有安裝Delphi, 所以我們無法知道程式在哪裡出錯, 舉個例子
procedure TForm1.Button1Click(Sender: TObject);
begin
   ShowMessage('1');
   Label1.Caption := IntToStr(100 div 10);
   ShowMessage('2');
   Label2.Caption := IntToStr(100 div 0);
   ShowMessage('3');
   Label3.Caption := IntToStr(100 div 2000);
   ShowMessage('4');
end;
客戶端跑程式時, 我們就可以從ShowMessage出來的資料得知跑到哪一行錯誤, 當然不是請你每一行都寫一個ShowMessage, 要用漸進的方式Debug, 譬如先寫在各Procedure or function的頭一行, 確定哪個副程式後再看需要做調整. 祝順利 我不是高手, 高手是正在銀幕前微笑的人.
------


我不是高手, 高手是正在銀幕前微笑的人.
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-10-22 03:18:23 IP:220.134.xxx.xxx 未訂閱
你是否有在OnCloseQuery ,OnDestory, OnClose等事件中作程式處理例如迴圈之類? 個人感覺 你可能有在該類事件裡某些處理 而因客戶與你的電腦環境可能有差異 造成你程式上的錯誤,如Miles兄所說的, 你可先試著在上述有作處理的事件中利用訊息來作DEBUG,以瞭解問題點. 有錯請指正 ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-10-22 10:45:10 IP:211.75.xxx.xxx 未訂閱
已照miles兄的方法除錯了,已更正一些錯誤,但執行到最後的end完跑出下列錯誤訊息已不知如何在除錯了help!help!
hagar
版主


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

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-10-22 11:28:26 IP:202.39.xxx.xxx 未訂閱
如果這個訊息出現並不會妨害其它運作 那還有一個方法可以試試: 拉一個 TApplicationEvent 元件 在此元件的 OnException 事件中做一些事 比方說將錯訊息寫在一個 Memo 裡 看可不可讓錯誤訊息對話方塊不要跳出來. 當然這只是治標的方法. 另外一個檢查的方向是: 看看有什麼 Timer 或 procedure 或 thread 會在 FormClose 後仍在運行的 發表人 - hagar 於 2004/10/22 12:02:15
Jasonwong
版主


發表:49
回覆:931
積分:581
註冊:2006-10-27

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-10-22 11:50:34 IP:61.219.xxx.xxx 未訂閱
引言:
這個屬於記憶體存取錯誤, 通常都是某些物件沒有開啟或者物件已經釋放, 而程式要去讀取他, 建議往這方面去 DEBUG -- 把手握緊,裡面什麼也沒有 把手鬆開,你擁有的是一切
------
聰明的人,喜歡猜心;雖然每次都猜對了,卻失去了自己的心
傻氣的人,喜歡給心;雖然每次都被笑了,卻得到了別人的心
likush
高階會員


發表:5
回覆:235
積分:103
註冊:2002-10-08

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-10-22 21:25:15 IP:220.134.xxx.xxx 未訂閱
插個花 你能否將你的程式在CLOSE及Destory部份或有問題的部份的程式碼貼出,相信對於解決你的問題會更快且更有助瞭解問題點所在。 個人感覺 光這樣討論,對於解決yx_huang77的而言助益並不大. ========================= 讀萬卷書~不如來K.TOP走一遭 =========================
P.D.
版主


發表:603
回覆:4038
積分:3874
註冊:2006-10-31

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-10-23 01:11:14 IP:61.71.xxx.xxx 未訂閱
引言: 程式結束後產生錯誤,但是編譯的那台不會其他電腦會!錯誤訊息如下
不知出錯的電腦是否使用WIN2000系統(看畫面不像XP), 我有個經驗, 如果我在 開發那台電腦使用資料庫, 而資料庫的開檔連結方式, 舉例以 BDE 設定 TABLE1.DATABASENAME=MYALIAS, 而對方的電腦沒有MYALIAS 一項就會出問題 或者 TABLE1.DATABASENAME='C:\MYPATH\MYDATABASE.DB', 這是最常用的做法(在設計端這樣指定, 直接在PROPERITY 上) 但交給另外一台電腦時, 在2000上如果開啟到這段, 而電腦上沒有這個 MYPATH路徑, 2000會立刻出現你那樣的狀況(但98會有比較清楚的錯誤描述, 反而2000較少), 建議你查一下這支程式中引用的資料庫設定
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-10-25 08:31:57 IP:211.75.xxx.xxx 未訂閱
終於找到問題了,謝謝版主Jasonwong 的提示!
bruce0211
版主


發表:157
回覆:668
積分:279
註冊:2002-06-13

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-10-25 08:57:26 IP:211.21.xxx.xxx 未訂閱
引言: 終於找到問題了,謝謝版主Jasonwong 的提示!
記憶體存取錯誤, 通常都是某些物件沒有開啟或者物件已經釋放, 而程式要去讀取他 ... 這跟電腦不同有關嗎 ? 在不會發作的那台電腦就會自行釋放 ??
yx_huang77
一般會員


發表:46
回覆:64
積分:22
註冊:2004-03-19

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-10-25 11:01:42 IP:211.75.xxx.xxx 未訂閱
有兩個會產生錯誤的地方就是在main form 我放了兩個元件timer,StatusBar並寫了以下的動作,覺得奇怪的是得先將這兩個Enabled := False再結束程式才不會觸發這兩個元件? procedure TFmenu.Timer1Timer(Sender: TObject); begin SB1.Panels.Items[2].Text := FormatDateTime('yyyy"/"mm"/"dd AM/PM hh:mm:ss' ,now); end; procedure TFmenu.SB1DrawPanel(StatusBar: TStatusBar; Panel: TStatusPanel; const Rect: TRect); begin PB1.Parent:=SB1; PB1.Left:=Rect.Left; PB1.Top:=Rect.Top; PB1.Width:=Panel.Width - 5; PB1.Height:=Rect.Bottom-Rect.Top; PB1.Visible:=True; end;
系統時間:2024-06-29 18:05:20
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!