Timer程式內容的問題 |
尚未結案
|
kimi
一般會員 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
|
taishyang
站務副站長 發表:377 回覆:5490 積分:4563 註冊:2002-10-08 發送簡訊給我 |
kimi您好:
請參考版規讓您的程式碼更方便閱讀
http://delphi.ktop.com.tw/topic.php?TOPIC_ID=43311
p.s:看不懂您問題要表達的意思 順心
|
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
如果只是要簡化寫法,您可以參考下面的寫法。可是依您的程式 While 迴圈將不會執行到,要注意唷...^^
void __fastcall TMain_Func::Timer1Timer(TObject *Sender) { if(go1>-1) { while(--go1==0) { Start_Button1->Click(); if(O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; break; } }Baby 發表人 - taishyang 於 2004/01/15 13:24:04 |
kimi
一般會員 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
|
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
|
kimi
一般會員 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
|
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
|
kimi
一般會員 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
if(go1>-1) { go1--; while(go1==0) { Start_Button1->Click(); if(O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; break; } } if(stop1>-1) { stop1--; while(stop1==0) { Stop_Button1->Click(); if(O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; break; } } if(t_1==1) { sec1 ; if(sec1`==0) { sec1=0; min1 ; if(min1`==0) { min1=0; hur1 ; } } String s1,m1,h1; if(sec1<10) s1="0" IntToStr(sec1); else s1=IntToStr(sec1); if(min1<10) m1="0" IntToStr(min1); else m1=IntToStr(min1); if(hur1<10) h1="0" IntToStr(hur1); else h1=IntToStr(hur1); Counter1->Text=h1 ": " m1 ": " s1; }請大大幫我看看吧!! 感恩哦 發表人 - kimi 於 2004/01/15 23:03:13 |
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
以下是您的程式碼
if(go1>-1) { go1--; while(go1==0) { Start_Button1->Click(); if(O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; break; } } if(stop1>-1) { stop1--; while(stop1==0) { Stop_Button1->Click(); if(O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; break; } } if(t_1==1) { sec1 ; if(sec1`==0) { sec1=0; min1 ; if(min1`==0) { min1=0; hur1 ; } } String s1,m1,h1; if(sec1<10) s1="0" IntToStr(sec1); else s1=IntToStr(sec1); if(min1<10) m1="0" IntToStr(min1); else m1=IntToStr(min1); if(hur1<10) h1="0" IntToStr(hur1); else h1=IntToStr(hur1); Counter1->Text=h1 ": " m1 ": " s1; }依您的程式來看...好像是要秀時間,我只觀查邏輯性,你是不是少個括號 ? if(go1>-1) { go1--; while(go1==0) { Start_Button1->Click(); if(O_min1=="--"&&C_min1=="--") { Mod_Sel1->Checked=false; } break; } }Baby |
CuteBabyBoy
初階會員 發表:18 回覆:97 積分:48 註冊:2003-07-11 發送簡訊給我 |
|
dra
一般會員 發表:1 回覆:8 積分:1 註冊:2004-01-03 發送簡訊給我 |
if (go1>-1 && --go1==0) { Start_Button1->Click(); if (O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; } if (stop1>-1 && --stop1==0) { Stop_Button1->Click(); if(O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; } if(t_1==1) { sec1 ; if(sec1`==0) { sec1=0; min1 ; if(min1`==0) { min1=0; hur1 ; } } String s1,m1,h1; s1=(sec1<10 ? "0" : "") IntToStr(sec1); m1=(min1<10 ? "0" : "") IntToStr(min1); h1=(hur1<10 ? "0" : "") IntToStr(hur1); Counter1->Text=h1 ": " m1 ": " s1; }發表人 - dra 於 2004/01/16 10:51:17 |
kimi
一般會員 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
|
mieng
中階會員 發表:12 回覆:97 積分:81 註冊:2003-10-31 發送簡訊給我 |
|
kimi
一般會員 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
我是要用這一個程式,去控制我所設計的開關,當時間到了我所設定的時間時,就會自動開關。下面有一個程式是和前面相關連,請大大幫我看看吧!!
感恩!!
void __fastcall TTimerSet1::YesClick(TObject *Sender) { if(Counter->Checked==true) { int x; int y; if(StrToInt(CStartHour->Text)>=0&&StrToInt(CStartMin->Text)>0) { x=StrToInt(CStartHour->Text); y=StrToInt(CStartMin->Text); go1=x*3600 y*60; Main_Func->Enabled=true; Close(); } else if(StrToInt(CStopHour->Text)>=0&&StrToInt(CStopMin->Text)>0) { x=StrToInt(CStopHour->Text); y=StrToInt(CStopMin->Text); stop1=x*3600 y*60; Main_Func->Enabled=true; Close(); } else { Error->Show(); TimerSet1->Enabled=false; } } else { go1=-1; stop1=-1; } |
dra
一般會員 發表:1 回覆:8 積分:1 註冊:2004-01-03 發送簡訊給我 |
既然用 go1 計算 Start_Buttin1 的時間,會逐次減一是理所當然的吧
我猜你是一次只要給一個開關計時
void __fastcall TTimerSet1::YesClick(TObject *Sender) { if(Counter->Checked==true) { int x; int y; if(StrToInt(CStartHour->Text)>=0&&StrToInt(CStartMin->Text)>0) { x=StrToInt(CStartHour->Text); y=StrToInt(CStartMin->Text); go1=x*3600 y*60; stop1=-1; Main_Func->Enabled=true; Close(); } else if(StrToInt(CStopHour->Text)>=0&&StrToInt(CStopMin->Text)>0) { x=StrToInt(CStopHour->Text); y=StrToInt(CStopMin->Text); stop1=x*3600 y*60; go1=-1; Main_Func->Enabled=true; Close(); } else {發表人 - dra 於 2004/01/16 21:29:43 |
mieng
中階會員 發表:12 回覆:97 積分:81 註冊:2003-10-31 發送簡訊給我 |
您是否搞錯了??
go1不逐次減一,您要如何計數時間?? 如果您真的要go1在做判斷時不減一的話,
按照您第一次貼的程式段,直接改成下面的應該就可以了
void __fastcall TMain_Func::Timer1Timer(TObject *Sender) { if(go1>-1) { // go1--; while(go1-1 == 0) { Start_Button1->Click(); if(O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; break; } } }學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU) |
kimi
一般會員 發表:37 回覆:76 積分:22 註冊:2003-07-17 發送簡訊給我 |
對不起大大們我沒把我的問題說清楚!!
我所謂的go1逐次減一是指
void __fastcall TTimerSet1::YesClick(TObject *Sender)
{
if(Counter->Checked==true)
{
int x;
int y;
if(StrToInt(CStartHour->Text)>=0&&StrToInt(CStartMin->Text)>0)
{
x=StrToInt(CStartHour->Text);
y=StrToInt(CStartMin->Text);
go1=x*3600 y*60;
Main_Func->Enabled=true;
Close();
}
else if(StrToInt(CStopHour->Text)>=0&&StrToInt(CStopMin->Text)>0)
{
x=StrToInt(CStopHour->Text);
y=StrToInt(CStopMin->Text);
stop1=x*3600 y*60;
Main_Func->Enabled=true;
Close();
}
會逐次減一讓我的程式無法動作 發表人 - kimi 於 2004/01/17 00:51:53
|
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |