Arsip: hitung interval waktu penekanan tombol keyboard?

 
user image
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
user image
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 ;)
user image
more 19 years ago

imunk

thanks saya coba dulu
user image
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)
user image
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.. ;)
user image
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.
user image
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...
user image
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
user image
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...)
user image
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
Share to

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

Random Topic

Local Business Directory, Search Engine Submission & SEO Tools FreeWebSubmission.com SonicRun.com