請問各路C++ Builder高手、先進們
在Builder中有沒有什麼方法可以使一個
事件所應處理的事沒處理完...就強制要
求離開該事件
例:
void __fastcall TForm::Button1Click(TObject *Sender)
{
fun1();
fun2();
fun3();
fun4();
}
一般正常情況都會執行fun1..fun2..fun3..fun4..
但若fun2執行有誤..想讓ButtomClick這事件直接結束..不去執行
fun3 和 fun4 的話....是否有方法可以達成此結果....
[m
● Origin : 雲林科技大學藍天使 <bbs.yuntech.edu.tw> [FROM: 140.125.201.137]
> 一般正常情況都會執行fun1..fun2..fun3..fun4..
> 但若fun2執行有誤..想讓ButtomClick這事件直接結束..不去執行
> fun3 和 fun4 的話....是否有方法可以達成此結果....
使用 exception handling 的機制, 當 fun2 出錯時丟出一個
exception, 或者是 fun2 傳回一個錯誤碼, 檢查錯誤碼再決定
要不要執行 fun3, fun4.
四眼的王蟲
--
生命是在黑暗中閃爍的光
應該是判斷傳回值 + return 或 exit 吧。。 (goto 就不提了。。。)
還有沒有高手知道有其他 tip 的啊??
--
※ 來源:台灣科技大學BBS(bbs.et.ntust.edu.tw) ◆來自: phantom.ac.ntit.edu.tw
考慮一下用try和 exception 可能可以做到你的要求.
--
曾經有一份真誠的愛情擺在我面前 但是我沒有珍惜.
等到失去後 才後悔莫及 塵世間最痛苦的事 莫過於此
如果上天可以給我一個機會再來一次
我會跟那個女孩子說 我愛妳
如果非要把這份愛 加上一個期限
我希望是 .............一萬年
[m [1;31m※ 來源:‧神秘之旅 bbs.ice.cycu.edu.tw‧[FROM: pc21412.ice.cycu.edu.tw] [m
我想你的意思是 fun1()...fun4() 中的函式本身無法自行判斷已經出錯
,希望能經由外界的機制來中止吧!?
否則判斷 fun1()...fun4() 的各個傳回值再 return 不就可以了嗎?
因此那fun1()...fun4()想必都是有迴圈囉。
那麼在 fun1() ... fun4() 各個函數的迴圈中加例如
bool bAnotherClick=false; //一個通知回家的FLAG
fun1()
{
........
Application->ProcessMessages(); //讓系統有機會處理其他的訊息...
if(bAnotherClick) return false; //有人叫說要回家了
.........
};
//再加上,例如另一個event handler來通知叫Button1Click(TObject
*Sender)回家囉。
void __fastcall TForm::AnotherButton1Click(TObject *Sender)
{
bAnotherClick=true;
};
//當然原來的就變成
void __fastcall TForm::Button1Click(TObject *Sender)
{
if(!fun1()) return ;
if(!fun2()) return ;
if(!fun3()) return ;
if(!fun4()) return ;
}
試試看,這樣好像可以。以前的 DOS MULTI TASK 都是用這招的。
請其他高手看看可不可以囉。
^_^