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

如何將程式暫停呢??

缺席
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-02-25 21:09:53 IP:61.70.xxx.xxx 未訂閱
小弟在與資料庫連線前先去做檢查資料庫是否連線,如果沒有連線則秀出一警告視窗後結束程式,但小弟用Showmessage來秀訊息時,程式依然往下跑,BDE錯誤依然出現!! 小弟的問題是該如何做到秀出訊息時將程式暫停!!該下何指令可以經程式強制關閉呢?? ======================== 我是DELPHI5的初學者
Chance36
版主


發表:31
回覆:1033
積分:792
註冊:2002-12-31

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-02-25 21:31:17 IP:211.20.xxx.xxx 未訂閱
jch 你好
  看你連線檢查在什麼位置
若在專案檔,則你可以如下程式處理
If 未連線 Then Begin
  // 使用MessageDlg
  MessageDlg('資料庫未連線,將結束程式..',mtWarning,[mbOK],0);
  Application.Terminate;
end Else Begin
  一般正程序
   ...
End;    若在主Form 同樣用MessageDlg秀訊息後直接Close;即可以了
或統一用Application.Terminate;結束程式的執行。
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-02-26 09:56:19 IP:211.23.xxx.xxx 未訂閱
引言: 小弟在與資料庫連線前先去做檢查資料庫是否連線,如果沒有連線則秀出一警告視窗後結束程式,但小弟用Showmessage來秀訊息時,程式依然往下跑,BDE錯誤依然出現!! 小弟的問題是該如何做到秀出訊息時將程式暫停!!該下何指令可以經程式強制關閉呢?? ======================== 我是DELPHI5的初學者
在 OnFormCreate , OnFormShow 中是不能用 MainForm.Close 來結束程式的. 如果一定要在這兩個 EVENT 中結束程式, 可參考下列兩個方法. 方法一: 用 Application.Terminate 來結束程式 方法二: 用 Halt 指令結束程式. ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-02-26 09:59:27 IP:163.17.xxx.xxx 未訂閱
多謝大哥!!不過小弟測試連線的方法失敗了........ ======================== 我是DELPHI5的初學者
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-02-26 12:20:11 IP:211.23.xxx.xxx 未訂閱
引言: 多謝大哥!!不過小弟測試連線的方法失敗了........ ======================== 我是DELPHI5的初學者
把你的 Source Code 放上來看看吧!! 不然很難猜測你的問題在那裏!! ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-02-26 20:18:18 IP:61.70.xxx.xxx 未訂閱
procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin if ErrorEvent = eeConnect then begin Caption := ''SQL Server is not Actived.''; ErrorCode := 0; // Reset Error end; end; procedure TForm1.Button1Click(Sender: TObject); begin ClientSocket1.Close; ClientSocket1.Host := ''localhost''; ClientSocket1.Port := 1433; ClientSocket1.Open; Caption := ''Testing SQL Server Active...''; end; procedure TForm1.ClientSocket1Connect(Sender: TObject; Socket: TCustomWinSocket); begin Caption := ''SQL Server is ready.''; end; procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction); begin if ClientSocket1.Active then ClientSocket1.Close; end; //---------------------------------------------------------- 以上為資料庫區Mickey大哥所提出的測試資料庫是否連線的方法, 我將Button1Click的內容改寫到fromcreat資料庫連線前檢查資料庫是否連線!! 並將更改Caption的部份改為showmessage來提示使用者,但是在檢查時SQL也去連線了,造成SQL的錯誤依然產生,並造成程式死當........ ======================== 我是DELPHI5的初學者
aquarius
資深會員


發表:3
回覆:347
積分:330
註冊:2003-05-21

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-02-27 16:59:51 IP:211.23.xxx.xxx 未訂閱
引言: procedure TForm1.ClientSocket1Error(Sender: TObject; Socket: TCustomWinSocket; ErrorEvent: TErrorEvent; var ErrorCode: Integer); begin if ErrorEvent = eeConnect then begin Caption := ''SQL Server is not Actived.''; ErrorCode := 0; // Reset Error Application.Terminate ; end; end;
加上紅色的那一行, 把 FormCreate 中的 Application.Terminate 拿掉, 應該就會對了!! 你錯誤的原因是沒搞清楚 Event 的順序. 在 FormCreate 中, 不會知道 Socket 是否已經成功的建立!! ...Aquarius
------
水瓶男的blog: http://791909.blogspot.com
jch
中階會員


發表:111
回覆:224
積分:66
註冊:2003-12-01

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-02-27 17:55:57 IP:163.17.xxx.xxx 未訂閱
多謝aquarius大哥的指教,如大哥所言'在 FormCreate 中, 不會知道 Socket 是否已經成功的建立'那麼小弟只好再另想辦法測試了,因為小弟在Create時就該始連接資料庫了....... ======================== 我是DELPHI5的初學者
heart75047
一般會員


發表:9
回覆:13
積分:19
註冊:2010-05-20

發送簡訊給我
#9 引用回覆 回覆 發表時間:2010-05-20 23:21:46 IP:114.46.xxx.xxx 未訂閱

sleep(毫秒); 可以讓程式延遲


===================引 用 jch 文 章===================
小弟在與資料庫連線前先去做檢查資料庫是否連線,如果沒有連線則秀出一警告視窗後結束程式,但小弟用Showmessage來秀訊息時,程式依然往下跑,BDE錯誤依然出現!! 小弟的問題是該如何做到秀出訊息時將程式暫停!!該下何指令可以經程式強制關閉呢?? ======================== 我是DELPHI5的初學者
syntax
尊榮會員


發表:26
回覆:1139
積分:1258
註冊:2002-04-23

發送簡訊給我
#10 引用回覆 回覆 發表時間:2010-05-24 09:18:56 IP:59.120.xxx.xxx 訂閱
建議在 Afterconstrction 內進行
===================引 用 jch 文 章===================
多謝aquarius大哥的指教,如大哥所言'在 FormCreate 中, 不會知道 Socket 是否已經成功的建立'那麼小弟只好再另想辦法測試了,因為小弟在Create時就該始連接資料庫了....... ======================== 我是DELPHI5的初學者
chenyk
高階會員


發表:14
回覆:94
積分:171
註冊:2002-07-08

發送簡訊給我
#11 引用回覆 回覆 發表時間:2010-11-09 09:10:38 IP:114.46.xxx.xxx 訂閱
將資料庫連結程式段寫在 TDatamodule,
讓Datamodule 比 主form 先執行,應可解決你的問題。
系統時間:2017-12-11 19:12:54
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!