Arsip: hitung interval waktu penekanan tombol keyboard?

more 19 years ago
imunk
sebelumnya makasih banyak buat mas2 yg sudah ngejelasin & ngejawab pertanyaan2 saya terdahulu. thanks a lot of all. :lol:
saya pengen nanya lagi nih, gapapa ya mas...... :?
saya pengen buat program untuk menghitung interval waktu yg dibutuhkan ketika tombol keyboard ditekan secara berurutan. :?:
misal gini :
saya ketik kata JAKARTA, dari penekanan tombol J sampe A waktunya dihitung, nah kira2 codingnya gimana ya. bisa gak pake TTimer, kalo bisa settingnya gimana ya? kan TTimer kan defaultnya detik sedangkan penekanan tombol mungkin satu kata bisa jadi diketik kurang dari 1 detik.
mudah2an pertanyaan saya yg gak tau keberapa kalinya ini bisa terjawab dan terselesaikan lewat forum ini.amin....... :D
dan buat mas2 yg mau ngejawab saya ucapkan banyak terima kasih.
DELPHI INDONESIA is the best for me and all. :D

more 19 years ago
kifmesoft
hi imunk
saya coba bantu kamu yaa.. :)
gini..
kalo yang dipake itu komponen visual seperti EDIT, MEMO, BUTTON,
LISTBOX, dll...
maka, bisa dech manfaatin event OnKeyPress
disitu kan ada variable Key... terus gunakan fungsi TIME
jadi kayaknya belum perlu deh pake TTimer
terus... yang rumit menurutku jika kata JAKARTA sedang diketik
tombol J sampe A kemudian tiba-tiba A dihapus (pake BACKSPACE)
kan balik lagi ke J .... :D
kalo jumlah karakternya 1 maka mulailah ambil TIME.. simpan
karakter berikutnya juga ambil TIME lagi... dan simpan, begitu seterusnya
dari perkiraan logika itu, cobalah dulu memperkirakan codingnya...
kalo ada error, nanti bisa sharing lagi, ok ;)

more 19 years ago
ZeAL
ikutan ahh.. :)
dari penjelasannya, berhubung yang dihitung adalah lamanya waktu setelah menulis kata / kalimat, dan bukan antar huruf.... jadi.. biar codingnya lebih simple, pake timer aja...
timer dimulai dan berhenti ketika terjadi suatu event, misalnya tombol enter ditekan.
misalnya pake editbox, di OnKeyPress cukup cek penekanan tombol ENTER.
misalnya enter ditekan, cek keadaan timer.
Jika timer mati, reset variabel counter dan nyalakan timer...
Jika timer menyala, matikan timer dan tampilkan isi variabel counter...
ngerti kan maksudnya..???
trus timer bisa dirubah interval menjadi 1/1000 second..
rubah aja di object inspector-nya menjadi 1. (1000 = 1 detik)

more 19 years ago
kifmesoft
siiip! ZeAL
pake OnKeyPress atau OnChange kliatannya sama okenya,
tapi aku lebih suka pake OnChange,
soalnya kalo OnKeyPress kan yang ditekan bisa macam2 tuh..
permisalanmu oke juga ZeAL..
tinggal gimana imunk membuatnya dalam code, mudah2an oke.. ;)

more 19 years ago
imunk
makasih sebelumnya buat mas2 yg sudah ngejawab... :D
mungkin sedikit saya luruskan permasalahannya....
yg dihitung bukan per kata/kalimat tapi perhuruf, jadi dari kata JAKARTA perhitungannya sbb:
J->A->K->A->R->T->A
penekanan tombol dari J ke A waktunya berapa?
penekanan tombol dari A ke K waktunya berapa?
penekanan tombol dari K ke A waktunya berapa?
penekanan tombol dari A ke R waktunya berapa?
penekanan tombol dari R ke T waktunya berapa?
penekanan tombol dari T ke A waktunya berapa?
gitu ceritanya mas.... :)
nanti hasil dari interval waktu penekanan 2 tombol tersebut akan ditampilkan.

more 19 years ago
ZeAL
hmmm... diasumsikan cara gue yang dipake...
berarti di OnKeyPress check semua penekanan tombol untuk a..z, A..Z, 0..9..
Jika salah satu tombol tersebut ditekan, maka masukkan keadaan counter saat itu dan tombol yang ditekan kedalam variabel penampung....
buat aja variabel array 2 dimensi :
Penampung[i,1] untuk penampung counter. (counter di convert ke string dulu)
Penampung[i,2] untuk penampung karakter.
kenapa karakter ditampung juga?
sebab biar kita tau karakter apa yang ditekan pada waktu itu...
nanti yang didapat adalah lamanya waktu dari MULAI hingga tombol ditekan.
Kalo ingin tau lamanya waktu ANTARA karakter dan karakter, tinggal dikurangi dengan catatan sebelumnya...
jadi lebih lengkap kan..??
waktu antar karakter dapet dan waktu dari mulai juga dapet...

more 19 years ago
kifmesoft
Jika salah satu tombol tersebut ditekan, maka masukkan keadaan counter saat itu dan tombol yang ditekan kedalam variabel penampung....terus jika tombol yang ditekan dibatalkan pake "BACKSPACE" atau "DEL" mundur lagi gitu ?? hehehe sederhana tapi rumit lho..
kenapa karakter ditampung juga? sebab biar kita tau karakter apa yang ditekan pada waktu itu...misal kalo pake komponen TEdit, saya kurang setuju ZeAL soalnya karakter tsb dah ditampung di properti TEXT...
nanti yang didapat adalah lamanya waktu dari MULAI hingga tombol ditekan. Kalo ingin tau lamanya waktu ANTARA karakter dan karakter, tinggal dikurangi dengan catatan sebelumnya... jadi lebih lengkap kan..??SETUJUUUUUUU... ;) sebenarnya dia (mas Imunk) sdg bikin apa?? kayaknya yang deket2 sih bikin Fast Typing, dan kalo nanti yang dihitung adalah waktu pada masing-masing kata, yaaaa... menurutku sih, sebaiknya mulailah dengan logika menghitung kata-kata dulu, kan dah ada Thread tentang "iseng-iseng dengan kata-kata", bagus lhooo.. hahaha :D Hasilnya dari seluruh yang diketikkan mungkin berupa : - Jumlah Kata - Jumlah Karakter - dan Jumlah Waktunya

more 19 years ago
ZeAL
terus jika tombol yang ditekan dibatalkan pake "BACKSPACE" atau "DEL" mundur lagi gitu ?? hehehe sederhana tapi rumit lho..ohohoho... Sesuai dengan yang gue bilang sebelumnya, yang dicek cuma 1..z,A..Z,0..9. kan tombol Backspace dan del gak diperiksa.. dianggapnya lo masih mengetik huruf sebelumnya... Atau... kalo tombol BACKSPACE di tekan, kurangi aja posisi index array dengan 1... Jadi counter sebelumnya akan ditimpa dengan yang baru...
misal kalo pake komponen TEdit, saya kurang setuju ZeAL soalnya karakter tsb dah ditampung di properti TEXT...Bukan masalah ditampung dimana.. ini untuk menjawab pertanyaan, "Pada detik n, huruf apa yang ditekan?" Kalo tetep pake properti text, dapet jawabannya gimana coba..??? (Kalo misalnya yang ditampung hanya detik penekanan saja...)

more 19 years ago
kifmesoft
Menghindari tombol BACKSPACE atupun DELETE sebenarnya dapat
kita lakukan dengan mudah bilamana kita menggunakan event OnChange
dan melihat panjang karakter pada properti TEXT.
Dengan demikian kita membutuhkan pencatat panjang karakter untuk
dibandingkan dengan panjang karakter yang terdapat pada properti TEXT.
Bila panjangnya tidak sama, maka tentulah kita dapat mengambil keputusan..
apakah itu berupa penambahan pencatatan waktu, ataukah menghilangkan
waktu dari karakter yang terakhir...
kalo tombol BACKSPACE di tekan, kurangi aja posisi index array dengan 1... Jadi counter sebelumnya akan ditimpa dengan yang baru...saya kurang sependapat dengan hal tsb ;) jika tombol BACKSPACE ditekan, yang terhapus adalah karakter terakhir dan pencatatan waktu terakhirlah yang akan siap untuk ditimpa, sedangkan pencatat waktu sebelumnya tetap dipertahankan untuk dijadikan acuan interval bagi karakter yang akan masuk berikutnya.. tidakkah demikian?? sebenarnya pada thread awal saya udah mengatakan bahwa ini bisa jadi rumit jika pake BACKSPACE, ditambah lagi DELETE, bukankah DELETE dan juga BACKSPACE dapat terjadi ditengah? bagaimana dengan INSERT karakter ditengah? iseng amat ya.. :D tapi ya memang spt itulah seharusnya yang diperkirakan ;) Tanpa bermaksud membuatnya jadi tambah pelik... maka sebaiknya kita batasi aja menjadi simple... seperti ini misalnya : - Menggunakan komponen TEdit - Pengetikkan karakter yg diijinkan 'A'..'Z', 'a'..'z' - Penghapusan hanya boleh dilakukan pada karakter terakhir - Tidak ada penyisipan karakter (penambahan karakter hanya boleh sebagai karakter terakhir) Jika pembatasan tsb dapat menimbulkan salah tangkep, maka pembatasannya dapat disesuaikan ;) "Pembatasan tersebut berlaku mulai dari saat tulisan reply ini di posting hinga batas waktu yang diinginkan oleh masing2 pembaca.." hehehe :D Jika menggunakan batasan-batasan spt tersebut diatas, maka mungkin kode berikut dapat dijadikan bahan perbandingan...
......
......
Var
WaktuKetik: Array[1..1000] Of TDateTime;
TotalWaktu: TDateTime;
PanjangAkhir: Integer;
Mulai: Boolean;
......
......
procedure TForm1.Edit1Change(Sender: TObject);
begin
If Length(Edit1.Text) = 1 Then
Begin
If Not Mulai Then
Begin
If Edit1.Text[1] In ['A'..'Z', 'a'..'z'] Then
Begin
PanjangAkhir:= 1;
WaktuKetik[PanjangAkhir]:= Time;
TotalWaktu:= 0;
lbInterval.Caption:= FormatDateTime('hh:nn:ss:zzz',
TotalWaktu);
Mulai:= True;
End
End
Else
Begin
TotalWaktu:= 0;
lbInterval.Caption:= FormatDateTime('hh:nn:ss:zzz',
TotalWaktu);
End;
End
Else If Length(Edit1.Text) > 1 Then
Begin
If Edit1.Text[Length(Edit1.Text)] In ['A'..'Z', 'a'..'z'] Then
Begin
If Length(Edit1.Text) > PanjangAkhir Then
Begin
Inc(PanjangAkhir);
WaktuKetik[PanjangAkhir]:= Time;
TotalWaktu:= TotalWaktu + (WaktuKetik[PanjangAkhir] -
WaktuKetik[PanjangAkhir - 1]);
lbInterval.Caption:= FormatDateTime('hh:nn:ss:zzz',
TotalWaktu);
End
Else
Begin
TotalWaktu:= TotalWaktu - (WaktuKetik[PanjangAkhir] -
WaktuKetik[PanjangAkhir - 1]);
Dec(PanjangAkhir);
lbInterval.Caption:= FormatDateTime('hh:nn:ss:zzz',
TotalWaktu);
End;
End;
End
Else Mulai:= False;
end;
......
......
Gudlak.. ;)more ...
- Pages:
- 1
- 2
reply |
Report Obsolete
AI Forward

🚀 We're thrilled to partner with Alibaba Cloud for "AI Forward - Alibaba Cloud Global Developer Summit 2025" in Jakarta! Join us and explore the future of AI. Register now:
https://int.alibabacloud.com/m/1000400772/
#AlibabaCloud #DeveloperSummit #Jakarta #AIFORWARD
Last Articles
Last Topic
- PascalTalk #6: (Podcast) Kuliah IT di luar negeri, susah gak sih?
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #5: UX: Research, Design and Engineer
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #4: Obrolan Ringan Seputar IT
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #2: Membuat Sendiri SMART HOME
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #3: RADically Fast and Easy Mobile Apps Development with Delphi
by LuriDarmawan in Tutorial & Community Project more 4 years ago - PascalTalk #1: Pemanfaatan Artificial Intelligence di Masa Covid-19
by LuriDarmawan in Tutorial & Community Project more 4 years ago - Tempat Latihan Posting
by LuriDarmawan in OOT more 5 years ago - Archive
- Looping lagi...
by idhiel in Hal umum tentang Pascal Indonesia more 12 years ago - [ask] koneksi ke ODBC user Dsn saat runtime dengan ado
by halimanh in FireBird more 12 years ago - Validasi menggunakan data tanggal
by mas_kofa in Hal umum tentang Pascal Indonesia more 12 years ago
Random Topic
- bikin tombol download source code
by alisahasan in Tip n Trik Pemrograman more 18 years ago - Detect Caps lock On ?
by debby in Hal umum tentang Pascal Indonesia more 17 years ago - pusing
by mufti_sip in Kritik & Saran more 19 years ago - vista
by marvel in Tip n Trik Pemrograman more 17 years ago - Error waktu buat table di Interbase
by l1th1um in FireBird more 17 years ago - Menampilkan Report dengan Grouping
by Anonymous in Reporting more 17 years ago - Akses Store procedure mysql 5 dari d7 error dg dbexpress
by sukuguci in MySQL more 18 years ago - Merubah Regional Settings
by ZeAL in Tip n Trik Pemrograman more 18 years ago - Sql error
by keylock in MySQL more 16 years ago - Pop up menu di dbgrid
by Brams in Tip n Trik Pemrograman more 17 years ago