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

Win98 和 Win2K Timer 的使用

尚未結案
casper97
一般會員


發表:13
回覆:18
積分:11
註冊:2004-12-30

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-01-05 15:29:32 IP:211.75.xxx.xxx 未訂閱
小弟在計算每個 Timer 中斷所花費的時間, 但是在 98 和 2K 中竟然不同, 在 2K 下 Interval 設 20 還蠻準確, 但在98下 Interval 至少要設 54 以上才會比較接近, 這是為何? 要怎樣作才能在兩個系統下(98和2K)的 Timer 中斷能以相同的時間觸發呢? __fastcall TForm1::TForm1(TComponent* Owner) : TForm(Owner) { TOSVersionInfo VerInfo; VerInfo.dwOSVersionInfoSize=sizeof(VerInfo); if(GetVersionEx(&VerInfo)) { switch(VerInfo.dwPlatformId) { case VER_PLATFORM_WIN32s: Label1->Caption="Win32s"; break; case VER_PLATFORM_WIN32_WINDOWS: Label1->Caption="Windows 95/98"; break; case VER_PLATFORM_WIN32_NT: Label1->Caption="Windows NT"; break; default: break; } Label2->Caption=IntToStr(VerInfo.dwMajorVersion); Label3->Caption=IntToStr(VerInfo.dwMinorVersion); Label4->Caption=IntToStr(VerInfo.dwBuildNumber); if(VerInfo.szCSDVersion[0]!=' ') Label5->Caption=VerInfo.szCSDVersion; } QueryPerformanceCounter(&liStartCounter); QueryPerformanceFrequency(&liFrequency); Label6->Caption="Timer Interval=1000"; } //-------------------------------------------------------------------- void __fastcall TForm1::Button1Click(TObject *Sender) { Form1->Close(); } //--------------------------------------------------------------------------- void __fastcall TForm1::Timer1Timer(TObject *Sender) { long int iSec; QueryPerformanceCounter(&liEndCounter); Label3->Caption=IntToStr(liEndCounter.QuadPart); dSec=(double)(liEndCounter.QuadPart-liStartCounter.QuadPart)/ (double)liFrequency.QuadPart; szBuf.sprintf("%.10f",dSec); Label4->Caption=szBuf; QueryPerformanceCounter(&liStartCounter); Label1->Caption=IntToStr(liStartCounter.QuadPart); QueryPerformanceFrequency(&liFrequency); Label2->Caption=IntToStr(liFrequency.QuadPart); } //-------------------------------------------------------------------- void __fastcall TForm1::Button2Enter(TObject *Sender) { Form1->Timer1->Enabled=false; Form1->Timer1->Interval=100; Label6->Caption="Timer Interval=100"; Form1->Timer1->Enabled=true; } //-------------------------------------------------------------------- void __fastcall TForm1::Button3Enter(TObject *Sender) { Form1->Timer1->Enabled=false; Form1->Timer1->Interval=20; Label6->Caption="Timer Interval=20"; Form1->Timer1->Enabled=true; } //-------------------------------------------------------------------- void __fastcall TForm1::Button5Click(TObject *Sender) { Form1->Timer1->Enabled=false; } //-------------------------------------------------------------------- void __fastcall TForm1::Button6Click(TObject *Sender) { Form1->Timer1->Enabled=true; } //-------------------------------------------------------------------- void __fastcall TForm1::Button7Click(TObject *Sender) { Form1->Timer1->Enabled=false; Form1->Timer1->Interval=1000; Label6->Caption="Timer Interval=1000"; Form1->Timer1->Enabled=true; }
daniel__lee
高階會員


發表:18
回覆:124
積分:113
註冊:2002-11-10

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-01-05 16:34:23 IP:61.218.xxx.xxx 未訂閱
千萬不要指望Timer能有多準.... 你再2k下同時再去執行幾個程式 如word等... 結果應該也是令人流淚 參考看看 http://delphi.ktop.com.tw/topic.php?topic_id=48074 相關資料站上還有很多可以多多找尋 ~ 勿在浮沙上面築高塔 ~
------
~ 勿在浮沙上面築高塔 ~
arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-01-05 19:52:04 IP:140.113.xxx.xxx 未訂閱
dear casper97:    可以試試看多媒體計時器(Multimedia Timer) 或小弟的拙作http://delphi.ktop.com.tw/topic.php?TOPIC_ID=51703
casper97
一般會員


發表:13
回覆:18
積分:11
註冊:2004-12-30

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-01-06 13:07:25 IP:211.75.xxx.xxx 未訂閱
感謝 arisaka_matsuri 回應:    小弟已下載 多媒體計時器(Multimedia Timer) 但是在 compile 範例時發生 Error [Linker Fatal Error] Fatal: Unable to open file 'RTL.LIB' 請問該如何使用
arisaka_matsuri
高階會員


發表:25
回覆:205
積分:231
註冊:2003-10-19

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-01-06 20:59:38 IP:140.113.xxx.xxx 未訂閱
dear casper97:    恩~真是奇怪的問題,我不記得有用到RTL.LIB。    使用上可以在宣告TMMTimer物件時先 #include "TMMTimerUnit.cpp" 在unit1.h中。或者,將TMMTimerUnit.cpp加入專案中(Ctrl+Alt+F11),在unit1.h中#include "TMMTimerUnit.hpp"    在Timer的觸發事件上,該函式一定要宣告為
void __fastcall 觸發事件的函式名稱(void);
能在建立TMMTimer物件時將觸發函式設定為
MMTimer->OnTimer = 觸發事件的函式名稱;
希望能解決你的問題囉~
casper97
一般會員


發表:13
回覆:18
積分:11
註冊:2004-12-30

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-01-07 13:44:22 IP:211.75.xxx.xxx 未訂閱
感謝 arisaka_matsuri 回應: 小弟重新開個 Project,然後把你範例中的 Unit1.cpp 和 TMMTimerUnit.cpp 加入此 Project 後重新 Compile 就 OK 了! 真是感謝!
系統時間:2024-09-30 17:51:19
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!