Zeitanzeige und Tastaturzähler

Anwendungen, Tools, Userlibs und anderes nützliches.
HemSA
Beiträge: 221
Registriert: 16.10.2005 13:59
Wohnort: Manisa / Türkei
Kontaktdaten:

Zeitanzeige und Tastaturzähler

Beitrag von HemSA »

Hallole, es ist nicht viel,
aber vielleicht kanns jemand gebrauchen.
Im Fenster wird die Startzeit, die jetzige Zeit, die Zeitdifferenz angezeigt. Wenn man die ESC - Taste drückt werden die Anzahl der Tastenbetätigung angezeigt.

Nichts weltbewegendes, aber vielleicht eine Hilfe, der so was ähnliches machen will ( habe auf diese Art jedenfalls gelernt, wie man die Tastaturbetätigung abfragen kann ).

Ach ja, noch eine Bemerkung. Die Anzeige der Zeitdifferenz hinkt manchmal um 1 Sekunde hinterher, warum weiss ich nicht.

Code: Alles auswählen


Enumeration ; Windows 
  #Hauptfenster
EndEnumeration 


Enumeration ; Gadgets 
  
   ; Hauptfenster 
  #Hauptfenster_txt_startzeit
  #Hauptfenster_txt_startzeitwert
  #Hauptfenster_txt_jetztzeit
  #Hauptfenster_txt_jetztzeitwert
  #Hauptfenster_txt_zeitdifferenz
  #Hauptfenster_txt_zeitdifferenzwert
  #Hauptfenster_txt_automatikzaehler
  #Hauptfenster_txt_automatikzaehlerwert
  #Hauptfenster_txt_tastaturzaehler1
  #Hauptfenster_txt_tastaturzaehler2
  #Hauptfenster_txt_tastaturzaehlerwert
  
EndEnumeration 
   
  
  Global zeitl.l
  
   
  Procedure Open_Hauptfenster()
  
  If OpenWindow(#Hauptfenster, 500, 500, 300, 150, "Zaehlfenster", #PB_Window_SystemMenu |#PB_Window_MinimizeGadget|#PB_Window_MaximizeGadget|#PB_Window_ScreenCentered)
  EndIf 
  
  
  If CreateGadgetList(WindowID(#Hauptfenster))
    TextGadget(#Hauptfenster_txt_startzeit, 10,  10, 50, 20, "Startzeit")
    TextGadget(#Hauptfenster_txt_startzeitwert, 150,  10, 350, 20, "444")
    TextGadget(#Hauptfenster_txt_jetztzeit, 10,  30, 50, 20, "Jetztzeit")
    TextGadget(#Hauptfenster_txt_jetztzeitwert, 150,  30, 300, 20, "")
    TextGadget(#Hauptfenster_txt_zeitdifferenz, 10,  50, 250, 20, "Zeitdifferenz")
    TextGadget(#Hauptfenster_txt_zeitdifferenzwert, 150,  50, 300, 20, "")
    TextGadget(#Hauptfenster_txt_automatikzaehler, 10, 70, 200, 20, "Alle 5 sek um 1 erhöhen")
    TextGadget(#Hauptfenster_txt_automatikzaehlerwert, 150, 70, 300, 20, "")
    TextGadget(#Hauptfenster_txt_tastaturzaehler1, 10, 90, 90, 20, "Tastaturzaehler")
    TextGadget(#Hauptfenster_txt_tastaturzaehler2, 10, 110, 100, 20, "(Esc Taste drücken)")
    TextGadget(#Hauptfenster_txt_tastaturzaehlerwert, 150, 90, 100, 20, "")
    
  EndIf
  
   
  EndProcedure
  
  
  
Procedure hauptprogramm()
  
  Static zeitl.l
    
  Protected quit.l 
  Protected EventID.l 
  Protected EventGadget.l 
  Protected EventWindow.l 
  
  
  Open_Hauptfenster()
 
  
  zeitl.l = ElapsedMilliseconds() 
  startzeitl.l= ElapsedMilliseconds()/1000 
  startzeits.s=FormatDate("%dd:%mm:%yyyy    %hh:%ii:%ss",Date())
  automatikmengel.l=0
  zaehlerl.l=1
  ausgleichl.l=-2
  tastaturmengel.l=0
  
  
  AddKeyboardShortcut(#Hauptfenster, #PB_Shortcut_Escape, 9999)
  
  Repeat 
    
    EventID     = WaitWindowEvent(100) 
    EventGadget = EventGadget() 
    EventWindow = EventWindow() 
    MenuID      = EventMenu() 
    
    Select EventID 
      Case #PB_Event_CloseWindow 
        
        Select EventWindow 
          Case #Hauptfenster :  quit =1      
        EndSelect    
        
      Case #PB_Event_Menu 
        Select MenuID 
          Case 9999 
 
          tastaturmengel.l=tastaturmengel.l+1
          tastaturmenges.s=Str(tastaturmengel.l)
   
        EndSelect
        
    EndSelect
    

          
    If ElapsedMilliseconds() > zeitl.l 
       zeitl.l = zeitl.l + 1000 
       jetztzeits.s=FormatDate("%dd:%mm:%yyyy    %hh:%ii:%ss",Date()) 
       jetztzeitl.l=ElapsedMilliseconds()/1000
      
         
    
      zeitdifferenzl.l=(jetztzeitl.l-startzeitl.l)
      zeitdifferenzs.s=Str(zeitdifferenzl.l)
      
      automatikzeits.s="5"
      
      automatikzeitl.l=Val(automatikzeits.s)
        
      
      If zeitdifferenzl.l-automatikzeitl.l*zaehlerl.l=0
         ausgleichl.l=0
         automatikmengel.l=automatikmengel.l+1+ausgleichl.l
         zaehlerl.l=zaehlerl.l+1
         automatikmenges.s=Str(automatikmengel.l)
      EndIf
      
      
      Debug tastaturmenges.s +"   "  +  automatikmenges.s; wenn angeschaltet, dann ist die Zeitdifferenz manchmal um 1 sekunde falsch
      
      
        SetGadgetText(#Hauptfenster_txt_startzeitwert,startzeits.s)
        SetGadgetText(#Hauptfenster_txt_jetztzeitwert,jetztzeits.s)
        SetGadgetText(#Hauptfenster_txt_zeitdifferenzwert,zeitdifferenzs.s)
        SetGadgetText(#Hauptfenster_txt_automatikzaehlerwert,automatikmenges.s)
        SetGadgetText(#Hauptfenster_txt_tastaturzaehlerwert,tastaturmenges.s)
    
     
      
    EndIf
    
        
            
  Until quit=1 
  
EndProcedure 

hauptprogramm()
End 

PB 4.02 (wegen Disphelper), 5.72 (Windows) (x64)
Benutzeravatar
bobobo
jaAdmin
Beiträge: 3873
Registriert: 13.09.2004 17:48
Kontaktdaten:

Re: Zeitanzeige und Tastaturzähler

Beitrag von bobobo »

HemSA hat geschrieben:..
Ach ja, noch eine Bemerkung. Die Anzeige der Zeitdifferenz hinkt manchmal um 1 Sekunde hinterher, warum weiss ich nicht.
..
ich erahne eine recht verknurpelte zeitauflösungsroutine mit sowas
wie 'irgendwas+1000' und das zu einem falschen zeitpunkt irgendwo
im code.
‮pb aktuel 6.2 windoof aktuell und sowas von 10
Ich hab Tinnitus im Auge. Ich seh nur Pfeifen.
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

Code: Alles auswählen

zeitl.l = zeitl.l + 1000
Kanns daran liegen?
Kaeru Gaman
Beiträge: 17389
Registriert: 10.11.2004 03:22

Re: Zeitanzeige und Tastaturzähler

Beitrag von Kaeru Gaman »

@Yoshi
Yoshi hat geschrieben:

Code: Alles auswählen

zeitl.l = zeitl.l + 1000
Kanns daran liegen?
bobobo hat geschrieben:ich erahne eine recht verknurpelte zeitauflösungsroutine mit sowas
wie 'irgendwas+1000' und das zu einem falschen zeitpunkt irgendwo
im code.
bitte tu nicht so, als würdest du es durchblicken.

zeitl = zeitl + 1000 ist eine wesentlich bessere vorgehensweise als
zeitl = ElapsedMilliseconds() + 1000

das problem liegt in der
recht verknurpelte zeitauflösungsroutine
ok?

und btw:
deine banner sind zu aufdringlich.
eines reicht, und animiert muss es auch nicht sein.
Der Narr denkt er sei ein weiser Mann.
Der Weise weiß, dass er ein Narr ist.
Yoshi
Beiträge: 95
Registriert: 09.01.2007 16:42

Beitrag von Yoshi »

Gut jetzt ists nur noch eins.
Antworten