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

Timer程式內容的問題

尚未結案
kimi
一般會員


發表:37
回覆:76
積分:22
註冊:2003-07-17

發送簡訊給我
#1 引用回覆 回覆 發表時間:2004-01-15 00:48:50 IP:61.227.xxx.xxx 未訂閱
void __fastcall TMain_Func::Timer1Timer(TObject *Sender) { if(go1>-1) { go1--; while(go1==0) { Start_Button1->Click(); if(O_min1=="--"&&C_min1=="--") Mod_Sel1->Checked=false; break; } } 請大大告訴我在程式的"go1--" 可否有其它的寫法
taishyang
站務副站長


發表:377
回覆:5490
積分:4563
註冊:2002-10-08

發送簡訊給我
#2 引用回覆 回覆 發表時間:2004-01-15 00:59:46 IP:140.135.xxx.xxx 未訂閱
kimi您好: 請參考版規讓您的程式碼更方便閱讀 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=43311 p.s:看不懂您問題要表達的意思 順心
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2004-01-15 09:29:45 IP:218.167.xxx.xxx 未訂閱
如果只是要簡化寫法,您可以參考下面的寫法。可是依您的程式 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

發送簡訊給我
#4 引用回覆 回覆 發表時間:2004-01-15 10:38:10 IP:211.22.xxx.xxx 未訂閱
CuteBabyBoy大大,程式真的不行 無法做到我要的要求
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#5 引用回覆 回覆 發表時間:2004-01-15 10:50:14 IP:218.167.xxx.xxx 未訂閱
對不起...剛剛在開會,所以就馬上回應沒有看畫面....    
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
kimi
一般會員


發表:37
回覆:76
積分:22
註冊:2003-07-17

發送簡訊給我
#6 引用回覆 回覆 發表時間:2004-01-15 14:59:41 IP:211.22.xxx.xxx 未訂閱
謝謝CuteBabyBoy大大的回答,但是我的程式還是會將go1逐次減一,不可以達到我的要求
CuteBabyBoy
初階會員


發表:18
回覆:97
積分:48
註冊:2003-07-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2004-01-15 15:14:47 IP:218.167.xxx.xxx 未訂閱
請問您的程式碼為什麼要放在 Timer 內 ? 而您的要求能否明確說明...^^ 如果可以能否將程式碼秀出來讓大家討論...^^ Baby
kimi
一般會員


發表:37
回覆:76
積分:22
註冊:2003-07-17

發送簡訊給我
#8 引用回覆 回覆 發表時間:2004-01-15 23:01:24 IP:61.227.xxx.xxx 未訂閱
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

發送簡訊給我
#9 引用回覆 回覆 發表時間:2004-01-16 09:46:45 IP:218.167.xxx.xxx 未訂閱
以下是您的程式碼  
        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

發送簡訊給我
#10 引用回覆 回覆 發表時間:2004-01-16 09:48:16 IP:218.167.xxx.xxx 未訂閱
對不起...貼錯了...><     
        if(go1>-1)
        {
                go1--;
                while(go1==0)
                {
                        Start_Button1->Click();
                        if(O_min1=="--"&&C_min1=="--")                            {
                                Mod_Sel1->Checked=false;
                        break;
                        }
                }
        }     
Baby
dra
一般會員


發表:1
回覆:8
積分:1
註冊:2004-01-03

發送簡訊給我
#11 引用回覆 回覆 發表時間:2004-01-16 10:29:31 IP:61.224.xxx.xxx 未訂閱
 
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

發送簡訊給我
#12 引用回覆 回覆 發表時間:2004-01-16 12:35:19 IP:211.22.xxx.xxx 未訂閱
謝謝大大們的大力相助,但是我的程式還是會將go1逐次減一,我真的不知道 該如何是好。
mieng
中階會員


發表:12
回覆:97
積分:81
註冊:2003-10-31

發送簡訊給我
#13 引用回覆 回覆 發表時間:2004-01-16 14:12:56 IP:61.60.xxx.xxx 未訂閱
可以詳細的解釋一下您所要的功能嗎?? 因為照程式來看,只要go1大於-1時,就一定會減一的, 還是說您要的是當stop1 和go1中有一個減一時, 另一個就不減一呢?? 學習中請大家多多指導呦~~ ☆星霧☆(Mineg Chien WU)
kimi
一般會員


發表:37
回覆:76
積分:22
註冊:2003-07-17

發送簡訊給我
#14 引用回覆 回覆 發表時間:2004-01-16 16:40:33 IP:211.22.xxx.xxx 未訂閱
我是要用這一個程式,去控制我所設計的開關,當時間到了我所設定的時間時,就會自動開關。下面有一個程式是和前面相關連,請大大幫我看看吧!! 感恩!!
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

發送簡訊給我
#15 引用回覆 回覆 發表時間:2004-01-16 21:25:21 IP:61.224.xxx.xxx 未訂閱
既然用 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

發送簡訊給我
#16 引用回覆 回覆 發表時間:2004-01-16 21:31:45 IP:61.221.xxx.xxx 未訂閱
您是否搞錯了?? 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

發送簡訊給我
#17 引用回覆 回覆 發表時間:2004-01-17 00:45:37 IP:61.227.xxx.xxx 未訂閱
對不起大大們我沒把我的問題說清楚!! 我所謂的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
系統時間:2024-05-18 12:05:13
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!