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

Delphi 無法終止程式

尚未結案
cindyliu
一般會員


發表:16
回覆:18
積分:6
註冊:2008-09-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-12-21 12:39:20 IP:118.166.xxx.xxx 訂閱
最近按F9執行程式
測試完以後不管是按視窗右上角叉叉,或是按程式裡的結束按鈕終止程式...
視窗是不見了,可是DELPHI 還是在Running的狀態,沒多久之後就會跳出CPU的畫面..
必需用Program Reset (Ctrl F2) 來強迫結束..但幾次下來記憶體似乎就會不足

請問各位為什麼會這樣子? 是哪邊需要做設定嗎?我用的是Delphi 7...

同樣是那幾隻程式,以前從來沒發生過這種情形
以前都可以正常終止但最近卻常常會這樣~
pceyes
尊榮會員


發表:70
回覆:657
積分:1140
註冊:2003-03-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-12-21 22:07:50 IP:220.141.xxx.xxx 訂閱
無論如何,當在有問題的程式碼產生例外時,後面的釋放資源的動作就沒發生作用了,多做幾次,連編譯器都掛了。
重點在於良好的寫作習慣,否則再好的編譯器都沒法度。
[code delphi]
SL := TSTRINGLIST.CREATE;
TRY
:
有問題的程式碼????????
:
FINALLY
FREEANDNIL(SL);
[/code]
------
努力會更接近成功
P.D.
版主


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

發送簡訊給我
#3 引用回覆 回覆 發表時間:2008-12-21 23:35:17 IP:61.67.xxx.xxx 未訂閱
1.你的系統是XP哦, 如果你出現的錯誤是 CAN NOT ACCESS READ $XXXXXX AT WRITE $000000
那大概就無解了, 我的Delphi也常發生這類的狀況, 如果不是則要仔細查出你的error message 珃做決定
2.另一個方法, 請不要用 F9的方式RUN, 直接編譯成 EXE後再跑跑看
st33chen
尊榮會員


發表:15
回覆:591
積分:1201
註冊:2005-09-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2008-12-23 17:21:46 IP:122.116.xxx.xxx 未訂閱
請問 form 的 o n c l o s e 事件有內容嗎? 若有, 為何 ?

又, 我最近碰到的情況是 :
dbawared 元件互相參照, form 在 close 依序 free 元件時已找不到參照到的元件
這時要用 debug 單步執行去抓.
------
IS IT WHAT IT IS
我是 李慕白 請倒著唸.
又想把老話拿出來說, 請用台語發音 : 專家專家全是ROBOT CAR (滷肉腳啦);
都已接手這麼久了, 績效還是那麼爛, 講話還那麼大聲.
編輯記錄
st33chen 重新編輯於 2008-12-23 17:27:30, 註解 無‧
cindyliu
一般會員


發表:16
回覆:18
積分:6
註冊:2008-09-17

發送簡訊給我
#5 引用回覆 回覆 發表時間:2008-12-27 01:17:00 IP:118.166.xxx.xxx 訂閱
其實都是一模一樣沒有改過的程式...
只是最近拿來參考執行的時候才發現有關不掉的情形~
FORM的ONCLOSE事件中大都是做ADOQUERY.CLOSE

===================引 用 st33chen 文 章===================
請問 form 的 o n c l o s e 事件有內容嗎? 若有, 為何 ?

又, 我最近碰到的情況是 :
dbawared 元件互相參照, form 在 close 依序 free 元件時已找不到參照到的元件
這時要用 debug 單步執行去抓.
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2009-01-19 09:59:04 IP:203.79.xxx.xxx 訂閱
請問程式中有用到 Muti Thread 的東西嗎?

以前有碰過,只要有某個執行緒還在執行未結束時,程式就無法正常的關閉。

需先將該執行緒停止後,才能關閉程式。



zhouying82
高階會員


發表:150
回覆:272
積分:189
註冊:2004-03-16

發送簡訊給我
#7 引用回覆 回覆 發表時間:2009-02-15 16:06:13 IP:124.77.xxx.xxx 訂閱
可能碰到死循环或者你的资源没有及时的释放,建议还是测试下你的代码。实在不行CTRL+c也可以实现强制中断。
------
断断续续的学了几年,还是一个初学者,永远支持Delphi !
cindyliu
一般會員


發表:16
回覆:18
積分:6
註冊:2008-09-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2009-02-19 22:16:04 IP:118.166.xxx.xxx 訂閱
你指的是多執行緒嗎?也沒有唷...


===================引 用 carstyc 文 章===================
請問程式中有用到 Muti Thread 的東西嗎?

以前有碰過,只要有某個執行緒還在執行未結束時,程式就無法正常的關閉。

需先將該執行緒停止後,才能關閉程式。




aftcast
站務副站長


發表:81
回覆:1485
積分:1763
註冊:2002-11-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2009-02-20 00:17:27 IP:59.115.xxx.xxx 訂閱
os重灌後,原代碼再重跑看看是否同樣的情形? 有時中毒或是os太亂會有這樣的情形
------


蕭沖
--All ideas are worthless unless implemented--

C++ Builder Delphi Taiwan G+ 社群
http://bit.ly/cbtaiwan
carstyc
資深會員


發表:16
回覆:254
積分:329
註冊:2003-07-18

發送簡訊給我
#10 引用回覆 回覆 發表時間:2009-02-20 09:37:53 IP:203.79.xxx.xxx 訂閱
我猜應該不是你的程式不能終止程式,而是你在結束事件中,有某些錯誤,導致 Delphi 在Debug mode 下,出現 CPU 的畫面。

若是直接以執行檔執行時,應該就是在關閉時會有個Error 視窗跳出,然後程式還是會關閉。

這狀況發生原因可能是在 Form Close 事件後,某些物件釋放出錯,或某些不知道什麼的動作引發錯誤。

建議你在 Form Close 的event 中起始點設個中斷,然後逐步去執行(F8 or F7 ),看那『CPU 畫面』是發生那一行。

也許就能找到問題點了...


===================引 用 cindyliu 文 章===================
最近按F9執行程式
測試完以後不管是按視窗右上角叉叉,或是按程式裡的結束按鈕終止程式...
視窗是不見了,可是DELPHI 還是在Running的狀態,沒多久之後就會跳出CPU的畫面..
必需用Program Reset (Ctrl F2) 來強迫結束..但幾次下來記憶體似乎就會不足

請問各位為什麼會這樣子? 是哪邊需要做設定嗎?我用的是Delphi 7...

同樣是那幾隻程式,以前從來沒發生過這種情形
以前都可以正常終止但最近卻常常會這樣~
系統時間:2024-03-29 14:53:42
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!