在Delphi XE中有沒有提供與Diagnostics.TStopwatch
相同的服務的秒錶類(最好是opensource)?Delphi 2007的秒錶類
回答
我更傾向於去this(TStopUhr)實施Delphi Praxis論壇找到。
摘錄:
type
TStopUhr = class
private
FStoppedTime : Int64;
FStartValue : Int64;
FStopValue : Int64;
FStartTime : TDateTime;
FStopTime : TDateTime;
FMethode : TStopUhrMethode;
FMethodeInUse : TStopUhrMethode;
protected
function GetStoppedTimeStr: String;
public
Constructor Create;
Destructor Destroy; Override;
procedure Start;
procedure Stop;
property StartTime : TDateTime read FStartTime;
property StopTime : TDateTime read FStopTime;
property StoppedTime : Int64 read FStoppedTime;
property StoppedTimeStr : String read GetStoppedTimeStr;
property MeasureMethode : TStopUhrMethode Read FMethode Write FMethode;
end;
用法示例:
var
StopUhr : TStopUhr;
begin
StopUhr := TStopUhr.Create;
StopUhr.MeasureMethode := su_TickCount; // default = su_DateTime
StopUhr.Start;
// zu messende Aufgabe
StopUhr.Stop;
ShowMessage(StopUhr.StoppedTimeStr);
StopUhr.Free;
end;
它提供了在問題的評論跟帖推薦類似的功能是什麼RRUZ。
我意識到這是低科技,但Win32 API GetTickCount
功能對我來說足夠好。在大多數PC上,分辨率約爲15-20毫秒。
我這樣使用它,沒有任何類,但是你可以很容易地編寫自己的類:
function TimerElapsed(tick1,tick2:DWORD):DWORD;
begin
if ((tick2-tick1) < $80000000) then { timer roll-over check }
result := (tick2 - tick1) { normal }
else
result := (not tick1)+tick2; {rollover calculation}
end;
function TimingDemo:Cardinal;
var
time1,time2:Cardinal;
begin
time1 := GetTickCount;
DoSomethingSlow;
time2 := GetTickCount;
result := TimerElapsed(time1,time2); // return elapsed mSec.
end;
我使用稍微不同的算法來計算流逝的時間:函數TimerElapsed(tick1,tick2:DWORD):DWORD; 開始 如果tick2> = tick1然後{定時器翻轉檢查} 結果:=(tick2 - tick1){normal} else 結果:=(MAXDWORD - tick1)+ tick2; {rollover calculation} end; ' – 2012-02-09 20:15:40
我認爲MAXDWORD-tick1和NOT tick1會做同樣的事情。兩者都做1s補碼(邏輯NOT)。 – 2012-02-10 01:03:01
- 1. Delphi Outlook 2007/2010
- 2. DELPHI 2007和DATASNAP
- 3. Delphi 2007 IMAGE_FILE_LARGE_ADDRESS_AWARE
- 4. FitNesse for Delphi 2006/Delphi 2007/Delphi 2009
- 5. CardSpace和Delphi 2007/WIN32
- 6. Delphi XE2/2007和LibXML
- 7. IntraWeb-Delphi 2007的SSL問題
- 8. Delphi可以插入Excel 2007/2010表
- 9. Delphi.NET和Delphi 2007卡住
- 10. Delphi 2007支持Windows 2008 R2?
- 11. Delphi 2007中的Web Service應用
- 12. Exchange 2007主分類列表
- 13. Helper類使用秒錶類
- 14. 如何在Delphi 2007中安裝類或組件等單元?
- 15. Delphi 2007已安裝後,可以安裝Delphi 2006嗎?
- 16. 是否有一個Delphi混淆器,適用於> = Delphi 2007
- 17. 在Delphi 2007中使用Web服務
- 18. 將Delphi 2007組件遷移到.NET
- 19. 如何從Delphi 2007升級到XE2?
- 20. 找不到Delphi 2007 WSDL導入程序
- 21. Delphi 2007幫助系統安裝「錯誤」
- 22. 類型秒錶找不到
- 23. [x]秒後關閉Delphi對話框
- 24. 每x秒執行一次動作delphi
- 25. Delphi XE需要20秒才能啓動
- 26. Delphi中的C類類#
- 27. 如何處理從Delphi 6和WinXP到Delphi 2007和Vista/Win7的表單大小問題
- 28. 毫秒級的jQuery秒錶
- 29. 如何在Delphi 6 - 2007中保持表格和框架的可編譯性?
- 30. Delphi 2007 ZeosLib 6.6 Mysql 4.1來自其他客戶端的交易鎖表
試試這個http://delphi.about.com/od/windowsshellapi/a/delphi-high-performance-timer-tstopwatch.htm – RRUZ 2012-02-09 18:27:37
@RRUZ:非常好的資源,但我不確定它的許可證狀態。如果你遷移它,我可以接受它。 – menjaraz 2012-02-09 18:36:18
您可以根據許可證使用情況直接詢問Zarko,但我不認爲這個代碼有任何限制。 – RRUZ 2012-02-09 18:40:22