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

請問C++程式計時?

答題得分者是:pcboy
quentin520
一般會員


發表:15
回覆:13
積分:5
註冊:2006-12-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2010-10-19 15:42:27 IP:210.60.xxx.xxx 訂閱
請問   如果我執行程式執行一分鐘要如何記錄程式一開始跑的時間跟結束的時間!然後有辦法相減得到程式執行多久時間嗎?

pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2010-10-19 15:53:16 IP:210.69.xxx.xxx 訂閱

請參考


[code cpp]
DWORD t1, t2, t3;
char buf[16];

t1 = GetTickCount();
// ...
// ...
t2 = GetTickCount();
t3 = (t2 - t1) / 1000;
wsprintf(buf, "%d:d", t3/60, t3`);

[/code]

------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
quentin520
一般會員


發表:15
回覆:13
積分:5
註冊:2006-12-18

發送簡訊給我
#3 引用回覆 回覆 發表時間:2010-10-20 13:09:45 IP:210.60.xxx.xxx 訂閱
DWORD t1, t2, t3;
char buf[16];
if(g_JoystickState.lX>800){
t1 = GetTickCount();
}
if(g_JoystickState.lX<800){
t2 = GetTickCount();}
wsprintf(buf, "%d:d", t3/60, t3`);
我這樣寫執行時變數那裏都會出現錯誤~可以請教一下怎麼改嗎?
第一次用時間函式不太熟
編輯記錄
quentin520 重新編輯於 2010-10-19 23:11:13, 註解 無‧
quentin520 重新編輯於 2010-10-19 23:14:31, 註解 無‧
quentin520 重新編輯於 2010-10-19 23:16:37, 註解 無‧
quentin520 重新編輯於 2010-10-19 23:17:12, 註解 無‧
taishyang
站務副站長


發表:377
回覆:5485
積分:4552
註冊:2002-10-08

發送簡訊給我
#4 引用回覆 回覆 發表時間:2010-10-20 14:32:32 IP:122.116.xxx.xxx 訂閱
錯誤訊息是什麼?

===================引 用 quentin520 文 章===================
我這樣寫執行時變數那裏都會出現錯誤~可以請教一下怎麼改嗎?
第一次用時間函式不太熟

quentin520
一般會員


發表:15
回覆:13
積分:5
註冊:2006-12-18

發送簡訊給我
#5 引用回覆 回覆 發表時間:2010-10-20 14:48:19 IP:210.60.xxx.xxx 訂閱
t3 = (float) (t2-t1)/1000; 這行出錯

出現這個錯誤訊息
> main.exe!MainLoop(HWND__ * hWnd=0x00000000, unsigned int nMsg=275, unsigned int nTimerID=29670, unsigned long dwTime=14889468) 行 327 0x29 C
編輯記錄
quentin520 重新編輯於 2010-10-20 00:51:05, 註解 無‧
quentin520
一般會員


發表:15
回覆:13
積分:5
註冊:2006-12-18

發送簡訊給我
#6 引用回覆 回覆 發表時間:2010-10-20 17:20:15 IP:210.60.xxx.xxx 訂閱
 我發現問題了:
當我執行"if(g_JoystickState.lX>800){t1 = GetTickCount(); }// 開始時間 "這段程式時
"if(500導致這段"t3 = (t2 - t1) / 1000;"城是找不到t2的值.

我想問題應該出在這!有辦法解決嗎?我試著把資料存進TXT檔裡但第一筆資料會被蓋過去!有其他辦法解決嗎?

pcboy
版主


發表:177
回覆:1838
積分:1463
註冊:2004-01-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2010-10-20 20:48:05 IP:203.73.xxx.xxx 訂閱
 > 這段程式就會消失
消失 ? 應該是沒有執行吧 ?
if(g_JoystickState.lX>800){ t1 = GetTickCount(); }
if(g_JoystickState.lX<800){ t2 = GetTickCount(); }
t3 = (float) (t2-t1)/1000; 這行出錯
你的程式邏輯很奇怪
g_JoystickState.lX 大於 800 時,t2 沒有值,t3 計算會出錯 (除非前面有定義 t2 是某個非零值)
g_JoystickState.lX 大於 800 時,t1 沒有值,t3 計算會出錯 (除非前面有定義 t1 是某個非零值)
g_JoystickState.lX 等於 800 時,t1, t2 沒有值,t3 計算會出錯 (除非前面有定義 t1, t3 是某個非零值)
如果你要計算搖桿從小於 800 位置移動到大於 800 位置,程式應該
t1 = 0;
t2 = 0;
while ((t1==0) || (t2==0))
{
if(g_JoystickState.lX>800)
{
t1 = GetTickCount();
}
else
{
t2 = GetTickCount();
}
}
t3 = (float) (t2-t1)/1000;
PS: 現在電腦沒安裝 BCB,程式沒有測試
------
能力不足,求助於人;有能力時,幫幫別人;如果您滿意答覆,請適時結案!

子曰:問有三種,不懂則問,雖懂有疑則問,雖懂而想知更多則問!
quentin520
一般會員


發表:15
回覆:13
積分:5
註冊:2006-12-18

發送簡訊給我
#8 引用回覆 回覆 發表時間:2010-10-20 23:17:06 IP:111.253.xxx.xxx 訂閱
感謝版主!我用好了~
系統時間:2017-10-17 21:15:36
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!