Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

[C++ Builder]急問....... (轉載)

0 views
Skip to first unread message

隨風而逝....

unread,
Nov 26, 1997, 3:00:00 AM11/26/97
to

【 以下文字轉載自 language 討論區 】
【 原文由 maple 所發表 】


請問各路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]

四眼的王蟲

unread,
Nov 27, 1997, 3:00:00 AM11/27/97
to

mapl...@bbs.yuntech.edu.tw (隨風而逝....) wrote:

> 一般正常情況都會執行fun1..fun2..fun3..fun4..
> 但若fun2執行有誤..想讓ButtomClick這事件直接結束..不去執行
> fun3 和 fun4 的話....是否有方法可以達成此結果....

使用 exception handling 的機制, 當 fun2 出錯時丟出一個
exception, 或者是 fun2 傳回一個錯誤碼, 檢查錯誤碼再決定
要不要執行 fun3, fun4.

四眼的王蟲

--
生命是在黑暗中閃爍的光

思想是奔放的火焰

unread,
Nov 27, 1997, 3:00:00 AM11/27/97
to

※ 引述《mapl...@bbs.yuntech.edu.tw (隨風而逝....)》之銘言:
: void __fastcall TForm::Button1Click(TObject *Sender)
: {
: fun1();
: fun2();
: fun3();
: fun4();
: }
: 一般正常情況都會執行fun1..fun2..fun3..fun4..

: 但若fun2執行有誤..想讓ButtomClick這事件直接結束..不去執行
: fun3 和 fun4 的話....是否有方法可以達成此結果....

應該是判斷傳回值 + return 或 exit 吧。。 (goto 就不提了。。。)
還有沒有高手知道有其他 tip 的啊??

--
※ 來源:台灣科技大學BBS(bbs.et.ntust.edu.tw) ◆來自: phantom.ac.ntit.edu.tw

Idle 山

unread,
Nov 30, 1997, 3:00:00 AM11/30/97
to

【 在 mapl...@bbs.yuntech.edu.tw (隨風而逝....) 的大作中提到: 】
: 【 以下文字轉載自 language 討論區 】

: 【 原文由 maple 所發表 】
: 請問各路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]

考慮一下用try和 exception 可能可以做到你的要求.
--
曾經有一份真誠的愛情擺在我面前 但是我沒有珍惜.
等到失去後 才後悔莫及 塵世間最痛苦的事 莫過於此
如果上天可以給我一個機會再來一次
我會跟那個女孩子說 我愛妳
如果非要把這份愛 加上一個期限
我希望是 .............一萬年

[m [1;31m※ 來源:‧神秘之旅 bbs.ice.cycu.edu.tw‧[FROM: pc21412.ice.cycu.edu.tw] [m

QUIZ

unread,
Dec 1, 1997, 3:00:00 AM12/1/97
to

==> 隨風而逝.... <mapl...@bbs.yuntech.edu.tw>
> 【 以下文字轉載自 language 討論區 】
> 【 原文由 maple 所發表 】
>
> 請問各路C++ Builder高手、先進們
>
> 在Builder中有沒有什麼方法可以使一個
> 事件所應處理的事沒處理完...就強制要
> 求離開該事件
>
> 例:
>
> void __fastcall TForm::Button1Click(TObject *Sender)
> {
>
> fun1();
> fun2();
> fun3();
> fun4();
>
> }
>
> 一般正常情況都會執行fun1..fun2..fun3..fun4..
> 但若fun2執行有誤..想讓ButtomClick這事件直接結束..不去執行
> fun3 和 fun4 的話....是否有方法可以達成此結果....
>

我想你的意思是 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 都是用這招的。
請其他高手看看可不可以囉。

^_^

Rick Chung

unread,
Dec 1, 1997, 3:00:00 AM12/1/97
to

可以利用 throw Exception 或 Abort 來控制呀!! 看是要由 funX()裡面丟
或由 Button1Click丟都可以...
0 new messages