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

如何計算鍵盤同一按鍵down up 的時間

答題得分者是:暗黑破壞神
s9327076
一般會員


發表:2
回覆:3
積分:1
註冊:2007-01-20

發送簡訊給我
#1 引用回覆 回覆 發表時間:2007-04-16 00:27:27 IP:218.162.xxx.xxx 訂閱
各位大大好:
小弟我寫程式遇到了問題,就是我寫一支程式遇到的問題,我想讓電腦計算我按下某個按鍵時,
然後彈起來的時間,例如我按 X,按著大約五秒放掉,然後讓電腦統計那5秒的時間,
小弟我是有嘗試著用clock() 和 KeyDown Up ,下去做嘗試,但是我得到的數字都是0,
不知道是我用錯語法,還是本身的想法就是個錯誤,
可以 請高手們能替我解答嗎?小弟萬分感謝。
暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#2 引用回覆 回覆 發表時間:2007-04-16 11:47:50 IP:218.170.xxx.xxx 訂閱
把你的寫法PO出來。
coldwind1234
一般會員


發表:3
回覆:25
積分:20
註冊:2006-08-01

發送簡訊給我
#3 引用回覆 回覆 發表時間:2007-04-16 13:59:47 IP:211.20.xxx.xxx 訂閱
Button 元件不是有 MouseDown & MouseUp 兩個事件可以使用
你可以在 MouseDown 事件下放入
DelayTime = GetTickCount();
在 MouseUp事件下放入
DelayTime = GetTickCount() - DelayTime;

而DelayTime 就是你要的秒數了(單位是 ms)


===================引 用 s9327076 文 章===================
各位大大好:
??????小弟我寫程式遇到了問題,就是我寫一支程式遇到的問題,我想讓電腦計算我按下某個按鍵時,
???? 然後彈起來的時間,例如我按 X,按著大約五秒放掉,然後讓電腦統計那5秒的時間,
??? 小弟我是有嘗試著用clock() 和 KeyDown Up ,下去做嘗試,但是我得到的數字都是0,
???? 不知道是我用錯語法,還是本身的想法就是個錯誤,
???? 可以 請高手們能替我解答嗎?小弟萬分感謝。
s9327076
一般會員


發表:2
回覆:3
積分:1
註冊:2007-01-20

發送簡訊給我
#4 引用回覆 回覆 發表時間:2007-04-16 15:18:14 IP:218.162.xxx.xxx 訂閱

===================引 用 暗黑破壞神 文 章===================
把你的寫法PO出來。
=======================================================
//---------------------------------------------------------------------------
#include
#pragma hdrstop
#include
#include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
double start,end,sum=0;

TForm1 *Form1;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}
//---------------------------------------------------------------------------

void __fastcall TForm1::FormKeyDown(TObject *Sender, WORD &Key,
TShiftState Shift)
{
switch(Key)
{
case 48:
time_t start=time(NULL);
break;
/*case 49:
time_t start=time(NULL);
break;

case 50:
time_t start=time(NULL);
break;

case 51:
time_t start=time(NULL);
break;

case 52:
time_t start=time(NULL);
break;

case 53:
time_t start=time(NULL);
break;

case 54:
time_t start=time(NULL);
break;

case 55:
time_t start=time(NULL);
break;

case 56:
time_t start=time(NULL);
break;

case 57:
time_t start=time(NULL);
break;*/

}
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormKeyUp(TObject *Sender, WORD &Key,
TShiftState Shift)
{
if (Key<48||Key>57)
{
Key=0;
}
time_t end=time(NULL);
double tot_time=difftime(end,start);
sum =tot_time;
tot_time=0;
Canvas->TextOut(200,50,sum);

}
//---------------------------------------------------------------------------

版主你好,以上是我的寫法,再請你多指教。謝謝!

coldwind1234
一般會員


發表:3
回覆:25
積分:20
註冊:2006-08-01

發送簡訊給我
#5 引用回覆 回覆 發表時間:2007-04-16 22:36:54 IP:125.231.xxx.xxx 訂閱
#include
#pragma hdrstop

#include "Unit1.h"
#include

//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;

time_t start,end; <-----這行
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
: TForm(Owner)
{
}

//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseUp(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
end=time(NULL);
double tot_time=difftime(end,start);
Canvas->TextOut(1,1,tot_time);
}

//---------------------------------------------------------------------------
void __fastcall TForm1::FormMouseDown(TObject *Sender, TMouseButton Button,
TShiftState Shift, int X, int Y)
{
start=time(NULL);
}


其他應該都一樣,執行的結果正常

暗黑破壞神
版主


發表:9
回覆:2301
積分:1627
註冊:2004-10-04

發送簡訊給我
#6 引用回覆 回覆 發表時間:2007-04-16 22:46:12 IP:218.170.xxx.xxx 訂閱
給你一個作業。
1.開個空的 Form 出來。把 keypreview 設成 true
2.加一個 Memo 進 form 中
3.在 keypress, keydown,keyup 的 event 中
分別去 memo 中記錄有這個 event 發生。
也就是說就只要寫一行 add 到這個 memo 中讓你去追發生什麼 event 就是了。
4.去按鍵看看。看你會發現 memo 中的記錄有什麼狀況。

這樣應該可以知道你的問題在那邊了吧。

這樣應該可以解決你的問題。

如果不行,我們再來討論。
harpist
資深會員


發表:3
回覆:251
積分:430
註冊:2002-10-03

發送簡訊給我
#7 引用回覆 回覆 發表時間:2007-04-16 23:44:28 IP:211.74.xxx.xxx 未訂閱
您先了解一下 變數的生命期與使用範圍

------
~§~迷時師渡,悟了自渡~§~
s9327076
一般會員


發表:2
回覆:3
積分:1
註冊:2007-01-20

發送簡訊給我
#8 引用回覆 回覆 發表時間:2007-04-17 00:56:56 IP:218.162.xxx.xxx 訂閱

===================引 用 暗黑破壞神 文 章===================
給你一個作業。
1.開個空的 Form 出來。把 keypreview 設成 true
2.加一個 Memo 進 form 中
3.在 keypress, keydown,keyup 的 event 中
分別去 memo 中記錄有這個 event 發生。
也就是說就只要寫一行 add 到這個 memo 中讓你去追發生什麼 event 就是了。
4.去按鍵看看。看你會發現 memo 中的記錄有什麼狀況。

這樣應該可以知道你的問題在那邊了吧。

這樣應該可以解決你的問題。

如果不行,我們再來討論。
=======================================================

恩 謝謝版主,我試著做看看,嘗試過後再跟你討教。
系統時間:2024-05-06 4:35:37
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!