線上訂房服務-台灣趴趴狗聯合訂房中心
發文 回覆 瀏覽次數:2889
推到 Plurk!
推到 Facebook!

請問「計時器」的寫法??

尚未結案
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2003-06-11 18:22:35 IP:210.66.xxx.xxx 未訂閱
各位前輩好,小弟想寫一個計時器, 當程式一打開 就會從 00:00:00 開始計算,一秒加1, 感覺不難,用timer可以讓數字從0一直加上去, 不過想轉成00:00:00時間格式,小弟找不到合適的function來用, 用TimeToStr又會在前面被加上「上午」「下午」一些字...    我有想寫loop來判斷,60就進1, 不過這樣00:00:00就要用三個Label, 不想把一個簡單的功能耗用太多資源,    請教各位前輩,有沒有什麼建議能指導一下 謝謝
taishyang
站務副站長


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

發送簡訊給我
#2 引用回覆 回覆 發表時間:2003-06-11 18:36:39 IP:140.135.xxx.xxx 未訂閱
gemi0305您好:   您可以參考小弟的拙作[碼表]   http://delphi.ktop.com.tw/topic.php?TOPIC_ID=26731 順心 <>~我也是在學習的階段,所以請您多多見諒與指教~
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#3 引用回覆 回覆 發表時間:2003-06-11 20:06:51 IP:61.224.xxx.xxx 未訂閱
taishyang前輩你好~    好像大家想到計時,第一直覺就是用進位的方式  前輩的可愛小碼表用了六個 > 謝謝了~
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2003-06-11 21:22:04 IP:61.224.xxx.xxx 未訂閱
小弟剛剛寫個了個function,給各位參考一下哦, 我覺得還滿可以啦,如果各位前輩有更好的方法, 請給我指教,謝謝!
AnsiString TForm1::toTime(int iTime)
{
    int s=0,m=0,h=0; //秒、分、時
                        
    m=iTime/60;            h=m/60;       //取時        
    m=m`;       //取分 
    s=iTime`;   //取秒        AnsiString TempStr;        TempStr.printf("d:d:d",h,m,s); //設定格式為00:00:00        return(TempStr);    }
//----------------------------------------------------
void __fastcall TForm1::Timer1Timer(TObject *Sender)
{
   t  ;
   Label1->Caption = toTime(t);
}
 
突然想到一個問題請教各位,因為我的t是int, 會不會因為timer一直跑,結果超出t的範圍,產生錯誤呢? 請前輩們給點意見~ 發表人 - gemi0305 於 2003/06/11 21:27:29
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#5 引用回覆 回覆 發表時間:2003-06-11 21:51:18 IP:61.56.xxx.xxx 未訂閱
>>用TimeToStr又會在前面被加上「上午」「下午」一些字... AnsiString str = TimeToStr(DateTime); 您可以改用: DateTime.FormatString("hh:nn:ss"); 如此就不會被OS在控制台內所設的 (AM/PM) 或 (上午/下午) 所影響了... 小小意見僅供參考... ps:你寫的程式碼可行,我沒更好的意見. 三人行必有我師焉
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#6 引用回覆 回覆 發表時間:2003-06-11 22:01:11 IP:61.56.xxx.xxx 未訂閱
突然想到一個問題請教各位,因為我的t是int, 會不會因為timer一直跑,結果超出t的範圍,產生錯誤呢? 請前輩們給點意見~ 對不起,忘了回覆上面這個問題耶~~ 其實你只要再增加宣告一個> > 三人行必有我師焉
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#7 引用回覆 回覆 發表時間:2003-06-11 23:50:04 IP:61.224.xxx.xxx 未訂閱
給arnoyu前輩,    您說的方法我試過了, 對DateTime做運算時,如:++、--... 它會對day做運算,而不會對time~    大概看了一下online help,發現好像沒有對time遞增的功能 > < 看來可能要再花點時間研究這個DateTime, 為了做這個計時器,多學了一些東西,真好  感謝兩位前輩啦~
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#8 引用回覆 回覆 發表時間:2003-06-12 02:08:31 IP:218.32.xxx.xxx 未訂閱
>> 您說的方法我試過了, >> 對DateTime做運算時,如: 、--... >> 它會對day做運算,而不會對time~ 說實在的,我不是粉清楚您說的耶! DateTimePicker1->Time= StrToTime("11:59:59"); 上面這行就能對 DateTime物件的時間屬性做更動了啊!? 試試看ㄅ~~ 希望您試得出來,記得要報告ㄛ!! 有點醉了,good night~~ 三人行必有我師焉
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#9 引用回覆 回覆 發表時間:2003-06-12 02:53:50 IP:218.32.xxx.xxx 未訂閱
剛剛斷線,發現又中毒了, 請放心,回應是不可能帶毒滴~~ 剛剛查了一下,發現 NOW()的回傳TDateTime值竟是Double型態 本來就有點暈,查到後更暈~~ 原來 DecodeTime 這個函數再BCB也能用... gemi0305大大,我真的快掛了.. 明天再討論了~~ 三人行必有我師焉
arnoyu
中階會員


發表:73
回覆:88
積分:67
註冊:2003-03-21

發送簡訊給我
#10 引用回覆 回覆 發表時間:2003-06-12 12:19:09 IP:61.56.xxx.xxx 未訂閱
看到自己昨晚的回應,真的好想哭~~ 每次喝醉都跟白痴一樣,而且特別雞婆~~ 真是萬分抱歉...(關於上面我的兩個爛回應).. 剛剛想了一下,發現您只要先宣告一個 TDateTime變數 然後用以下方法便可行了: TForm1 *Form1; TDateTime start1; //-------------------------------------------------------------------- __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { } //-------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { start1=Now(); Timer1->Enabled=true; } //-------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { Edit1->Text=(Now()-start1).FormatString("hh:nn:ss"); } //-------------------------------------------------------------------- 我覺得這樣用蠻方便地說~~ 雕蟲小技,僅供參考.. 三人行必有我師焉
gemi0305
版主


發表:81
回覆:564
積分:629
註冊:2003-05-11

發送簡訊給我
#11 引用回覆 回覆 發表時間:2003-06-12 13:29:47 IP:210.66.xxx.xxx 未訂閱
to 愛喝酒的arnoyu 前輩~ 真是個簡單又好用的方法阿~ 哈,我之前用那個function寫了一個小計時器說, 放在發表區中~ http://delphi.ktop.com.tw/topic.php?TOPIC_ID=32234 看來應該把語法改一下了~ 真是不好意思~呵 謝謝啦~
系統時間:2024-04-27 0:21:10
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!