請問如何按下Button來中斷stringgrid中正在執行的程式呢? |
尚未結案
|
ohsula
一般會員 發表:12 回覆:17 積分:5 註冊:2004-03-02 發送簡訊給我 |
hi,我有一測試程式,會將"pass"或"fail"的結果show在string grid cell內,它是一項一項執行的,可是,如果我要在中途按下burron來停止程式繼續執行卻不行,以下是我的程式碼,不知是哪裡出錯了呢???
我設一bool test_flag來判斷,srting grid cell出現"fail"時,程式就會停止執行,但如我要按下stopclick來改變test_flag的旗標使程式停止執行,卻不行,到底是為什麼?是因為string grid的關係嗎? bool test_flag;
void __fastcall TForm1::testClick(TObject *Sender)
{
test_flag=true;
int ok,pass=0;
// TEST FUNCTION PROGRAM
do {
ok=do_all_test();
if (ok==1)
{
pass ;
}
else
{
test_flag=false;
}
} while (test_flag);
}
//----------------------------------------------------------
void __fastcall TForm1::stopClick(TObject *Sender)
{
test_flag=false;
} //-----------------------------------------------------------
int __fastcall TForm1::do_all_test()
{
int ok=1; /* PASS --> ok=1, FAIL --> ok=0 */
test_1 (&ok);
if (ok == 0)
{
sg->Cells[3][1]="fail";
sg->Repaint();
return(ok);
}
else
{
sg->Cells[3][1]="pass";
sg->Repaint();
}
test_2(&ok);
if(ok==0)
{
sg->Cells[3][2]="fail";
sg->Repaint();
return(ok);
}
else
{
sg->Cells[3][2]="pass";
sg->Repaint();
}
} Auston Huang
------
Auston Huang |
xufs
一般會員 發表:16 回覆:26 積分:8 註冊:2003-04-23 發送簡訊給我 |
引言: hi,我有一測試程式,會將"pass"或"fail"的結果show在string grid cell內,它是一項一項執行的,可是,如果我要在中途按下burron來停止程式繼續執行卻不行,以下是我的程式碼,不知是哪裡出錯了呢??? 我設一bool test_flag來判斷,srting grid cell出現"fail"時,程式就會停止執行,但如我要按下stopclick來改變test_flag的旗標使程式停止執行,卻不行,到底是為什麼?是因為string grid的關係嗎? bool test_flag; void __fastcall TForm1::testClick(TObject *Sender) { test_flag=true; int ok,pass=0; // TEST FUNCTION PROGRAM do { ok=do_all_test(); if (ok==1) { pass ; } else { test_flag=false; } } while (test_flag); } //---------------------------------------------------------- void __fastcall TForm1::stopClick(TObject *Sender) { test_flag=false; } //----------------------------------------------------------- int __fastcall TForm1::do_all_test() { int ok=1; /* PASS --> ok=1, FAIL --> ok=0 */ test_1 (&ok); if (ok == 0) { sg->Cells[3][1]="fail"; sg->Repaint(); return(ok); } else { sg->Cells[3][1]="pass"; sg->Repaint(); } test_2(&ok); if(ok==0) { sg->Cells[3][2]="fail"; sg->Repaint(); return(ok); } else { sg->Cells[3][2]="pass"; sg->Repaint(); } } Auston Huang--------------------------------------------------------- 在 // TEST FUNCTION PROGRAM do { ok=do_all_test(); if (ok==1) { pass ; } else { test_flag=false; } } while (test_flag); 中只有test_flag 等於零值﹐才能退出循環。所以﹐應改為test_flag==false。未知對否﹖您試試看﹗ |
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
引言: hi,我有一測試程式,會將"pass"或"fail"的結果show在string grid cell內,它是一項一項執行的,可是,如果我要在中途按下burron來停止程式繼續執行卻不行,以下是我的程式碼,不知是哪裡出錯了呢??? 我設一bool test_flag來判斷,srting grid cell出現"fail"時,程式就會停止執行,但如我要按下stopclick來改變test_flag的旗標使程式停止執行,卻不行,到底是為什麼?是因為string grid的關係嗎?bool test_flag; void __fastcall TForm1::testClick(TObject *Sender) { test_flag=true; int ok,pass=0; // TEST FUNCTION PROGRAM do { ok=do_all_test(); if (ok==1) { pass ; } else { test_flag=false; } Application->ProcessMessages(); // <====加上這一行試試吧。因為你這裡是個loop,所以你按下stopClick事件時是沒辦法立刻去執行test_flag = false; } while (test_flag); } //---------------------------------------------------------- void __fastcall TForm1::stopClick(TObject *Sender) { test_flag=false; } //----------------------------------------------------------- int __fastcall TForm1::do_all_test() { int ok=1; /* PASS --> ok=1, FAIL --> ok=0 */ test_1 (&ok); if (ok == 0) { sg->Cells[3][1]="fail"; sg->Repaint(); return(ok); } else { sg->Cells[3][1]="pass"; sg->Repaint(); } test_2(&ok); if(ok==0) { sg->Cells[3][2]="fail"; sg->Repaint(); return(ok); } else { sg->Cells[3][2]="pass"; sg->Repaint(); } }Auston Huang |
ohsula
一般會員 發表:12 回覆:17 積分:5 註冊:2004-03-02 發送簡訊給我 |
|
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
引言: 二位大大,我試過了,可是都不行呢? Auston Huang那奇怪了,我試就可以,你檢查一下程式碼吧? 我測試的程式如下: //開始按鍵 bool test_flag; void __fastcall TForm1::Button1Click(TObject *Sender) { int Count = 0; test_flag=true; do { Label1->Caption = Count ; Application->ProcessMessages(); }while (test_flag); } //停止按鍵 void __fastcall TForm1::Button2Click(TObject *Sender) { test_flag= false; }發表人 - liangnet 於 2004/04/02 14:35:54 |
xufs
一般會員 發表:16 回覆:26 積分:8 註冊:2003-04-23 發送簡訊給我 |
引言:引言: 二位大大,我試過了,可是都不行呢? Auston Huang那奇怪了,我試就可以,你檢查一下程式碼吧? 我測試的程式如下://開始按鍵 bool test_flag; void __fastcall TForm1::Button1Click(TObject *Sender) { int Count = 0; test_flag=true; do { Label1->Caption = Count ; Application->ProcessMessages(); }while (test_flag); } //停止按鍵 void __fastcall TForm1::Button2Click(TObject *Sender) { test_flag= false; }發表人 - liangnet 於 2004/04/02 14:35:54 引言:只有while (test_flag)的test_flag 等於零值﹐才能退出循環。所以﹐應將其改為test_flag==false。未知對否﹖您試試看﹗引言: hi,我有一測試程式,會將"pass"或"fail"的結果show在string grid cell內,它是一項一項執行的,可是,如果我要在中途按下burron來停止程式繼續執行卻不行,以下是我的程式碼,不知是哪裡出錯了呢??? 我設一bool test_flag來判斷,srting grid cell出現"fail"時,程式就會停止執行,但如我要按下stopclick來改變test_flag的旗標使程式停止執行,卻不行,到底是為什麼?是因為string grid的關係嗎? bool test_flag; void __fastcall TForm1::testClick(TObject *Sender) { test_flag=true; int ok,pass=0; // TEST FUNCTION PROGRAM do { ok=do_all_test(); if (ok==1) { pass ; } else { test_flag=false; } } while (test_flag); } //---------------------------------------------------------- void __fastcall TForm1::stopClick(TObject *Sender) { test_flag=false; } //----------------------------------------------------------- int __fastcall TForm1::do_all_test() { int ok=1; /* PASS --> ok=1, FAIL --> ok=0 */ test_1 (&ok); if (ok == 0) { sg->Cells[3][1]="fail"; sg->Repaint(); return(ok); } else { sg->Cells[3][1]="pass"; sg->Repaint(); } test_2(&ok); if(ok==0) { sg->Cells[3][2]="fail"; sg->Repaint(); return(ok); } else { sg->Cells[3][2]="pass"; sg->Repaint(); } } Auston Huang--------------------------------------------------------- 在 // TEST FUNCTION PROGRAM do { ok=do_all_test(); if (ok==1) { pass ; } else { test_flag=false; } } while (test_flag); 中只有test_flag 等於零值﹐才能退出循環。所以﹐應改為test_flag==false。未知對否﹖您試試看﹗ |
liangnet
中階會員 發表:19 回覆:148 積分:83 註冊:2004-01-03 發送簡訊給我 |
[/quote]
只有while (test_flag)的test_flag 等於零值﹐才能退出循環。所以﹐應將其改為test_flag==false。未知對否﹖您試試看﹗
[/quote]
test_flag = false 也就是等於0
test_falg = true 也就是不等於0
電腦就是靠值是否等於0來表示false OR true 不過他這題是要test_flag == false 時跳出loop
應該是while(test_flag) OR while(test_flag == true)
|
ohsula
一般會員 發表:12 回覆:17 積分:5 註冊:2004-03-02 發送簡訊給我 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |