Differenze tra le versioni di "Creare un Cronometro"

Da Gambas-it.org - Wikipedia.
Riga 1: Riga 1:
 
==Creare un cronometro all'interno di un ciclo che mostri il tempo trascorso dall'avvio del ciclo==
 
==Creare un cronometro all'interno di un ciclo che mostri il tempo trascorso dall'avvio del ciclo==
Nel caso in esame, se si deve uscire dal ciclo all'accadere di una condizione, si potrà utilizzare il ciclo "Repeat...Until".
+
===Usando la Classe ''Timer''===
 +
In questo esempio si ha un Cronometro adatto a visualizzare il tempo trascorso dall'avvio del programma.
 +
<BR>Si farà uso della Classe "Timer".
 +
Private Timer1 As Timer
 +
Private tempo As Date
 +
 +
 +
Public Sub Button1_Click()
 +
 +
  With Timer1
 +
    .Delay = 1
 +
    .Start
 +
  End With
 +
 +
<FONT color=gray>' ''Assegna l'orario di questo istante:''</font>
 +
  tempo = Time
 +
 +
End
 +
 +
 +
Public Sub Timer1_Timer()
 +
 +
  Write "\r" & Format(CDate(Time - tempo), "hh:nn:ss.uuu")
 +
 +
End
 +
 +
 +
Public Sub Application_Read()  <FONT Color=gray>' ''Cliccando sul tasto "Invio" della tastiera, si solleva questo Evento''</font>
 +
 
 +
  Timer1.Stop
 +
 +
<FONT Color=gray>' ''Consente di terminare il programma nel caso vi sia la subroutine "Application_Read()":''</font>
 +
  Quit
 +
 +
End
  
Mostriamo un esempio a riga di comando, nel quale premendo il tasto "Invio" sulla tastiera si determinerà l'uscita dal ciclo:
+
===Usando un ciclo===
 +
In quest'altro esempio si farà uso del ciclo "While...Wend".
 +
 
 +
Mostriamo un esempio a riga di comando, nel quale, premendo il tasto "Invio" sulla tastiera, si determinerà l'uscita dal ciclo:
 
  Private bo As Boolean
 
  Private bo As Boolean
 
   
 
   
 
   
 
   
  '''Public''' Sub Main()
+
  Public Sub Main()
 
    
 
    
 
   Dim tm As Date
 
   Dim tm As Date
Riga 13: Riga 50:
 
   tm = Now
 
   tm = Now
 
    
 
    
   Repeat
+
   While Not bo
 
  <FONT Color=gray>' ''La funzione "DateDiff()" passa alla funzione "Time()" la differenza, espressa in millisecondi, tra il corrente orario e quello memorizzato all'avvio del programma.''
 
  <FONT Color=gray>' ''La funzione "DateDiff()" passa alla funzione "Time()" la differenza, espressa in millisecondi, tra il corrente orario e quello memorizzato all'avvio del programma.''
  ' ''La funzione "Time()" passa alla funzione "CStr()" un valore temporale.''
+
  ' ''La funzione "Time()" passa alla funzione "Write" un valore temporale, consentendo anche di mostrare i millisecondi.''</font>
' ''La funzione "CStr()" consente di mostrare con "Write" in Console anche i millisecondi.''</font>
+
     Write "\r" & Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond))
     Write "\r" & CStr(Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond)))
+
    Flush
     Wait 0.001
+
     Wait 0.01
   Until bo
+
   Wend
 
+
 
  <FONT Color=gray>' ''Consente di terminare il programma nel caso vi sia la subroutine "Application_Read()":''</font>
 
  <FONT Color=gray>' ''Consente di terminare il programma nel caso vi sia la subroutine "Application_Read()":''</font>
 
   Quit
 
   Quit
 
    
 
    
  '''End'''
+
  End
 
   
 
   
 
   
 
   
  '''Public''' Sub Application_Read()
+
  Public Sub Application_Read()  <FONT Color=gray>' ''Cliccando sul tasto "Invio" della tastiera, si solleva questo Evento''</font>
 
    
 
    
 
   bo = True
 
   bo = True
 
    
 
    
  '''End'''
+
  End
 
 
  
 
==Cronometro che mostra l'orario corrente, usando la funzione "Time"==
 
==Cronometro che mostra l'orario corrente, usando la funzione "Time"==
Riga 46: Riga 82:
 
  '''End'''
 
  '''End'''
 
Volendo, anziché usare un ciclo, sarà possibile usare anche la Classe "Timer".
 
Volendo, anziché usare un ciclo, sarà possibile usare anche la Classe "Timer".
 
 
==Cronometro che calcola il tempo trascorso da un certo orario, usando la Classe ''Timer''==
 
In quest'altro esempio, invece, si ha un Cronometro adatto a visualizzare il tempo trascorso da un certo orario che sarà impostato e partirà cliccando su un "Button" posto sul "Form".
 
<BR>Si farà uso in questo esempio della Classe "Timer" (ma potrebbe essere utilizzato, ovviamente, anche un ciclo).
 
Private tempo As Date
 
 
 
'''Public''' Sub Button1_Click()
 
 
    With Timer1
 
      .Delay = 1
 
      .Start
 
    End With
 
 
<FONT color=gray>' ''Assegna l'orario di questo istante:''</font>
 
    tempo = Time
 
 
'''End'''
 
 
 
'''Public''' Sub Timer1_Timer()
 
 
    TextBox1.Text = Format(CDate(Time - tempo), "hh:nn:ss.uuu")
 
 
'''End'''
 
 
====Medesimo esempio, ma in un'applicazione a ''riga di comando'' ed usando un ciclo anziché un ''Timer''====
 
Per realizzare un cronometro in un'applicazione a ''riga di comando'' senza l'uso della Classe ''Timer'', si prenderà l'orario all'avvio dell'applicazione medesima, e in un apposito ciclo si passerà alla funzione ''Date( )'' la differenza fra l'orario corrente e quello iniziale.
 
''' Public''' Sub Main()
 
 
 
  Dim tm As Date
 
 
 
<FONT color=gray>' ''Prende l'orario iniziale:''</font>
 
  tm = Now
 
 
 
  Do
 
    Write "\rTempo: " & Date(0, 0, 0, 0, 0, 0, DateDiff(tm, Now, gb.Millisecond))
 
    Wait 0.001
 
  Loop
 
 
 
'''End'''
 
  
  
Riga 96: Riga 90:
 
* <FONT color=#B22222>nn</font> = minuti;
 
* <FONT color=#B22222>nn</font> = minuti;
 
* <FONT color=#B22222>ss</font> = secondi;
 
* <FONT color=#B22222>ss</font> = secondi;
* <FONT color=#B22222>uuu</font> = decimi, centesimi e millesimi di secondo.
+
* <FONT color=#B22222>uuu</font> = millesimi di secondo.

Versione delle 17:58, 23 giu 2023

Creare un cronometro all'interno di un ciclo che mostri il tempo trascorso dall'avvio del ciclo

Usando la Classe Timer

In questo esempio si ha un Cronometro adatto a visualizzare il tempo trascorso dall'avvio del programma.
Si farà uso della Classe "Timer".

Private Timer1 As Timer
Private tempo As Date


Public Sub Button1_Click()

 With Timer1
   .Delay = 1
   .Start
 End With

' Assegna l'orario di questo istante:
 tempo = Time

End


Public Sub Timer1_Timer()

 Write "\r" & Format(CDate(Time - tempo), "hh:nn:ss.uuu")

End


Public Sub Application_Read()  ' Cliccando sul tasto "Invio" della tastiera, si solleva questo Evento
 
 Timer1.Stop

' Consente di terminare il programma nel caso vi sia la subroutine "Application_Read()":
 Quit

End

Usando un ciclo

In quest'altro esempio si farà uso del ciclo "While...Wend".

Mostriamo un esempio a riga di comando, nel quale, premendo il tasto "Invio" sulla tastiera, si determinerà l'uscita dal ciclo:

Private bo As Boolean


Public Sub Main()
 
 Dim tm As Date
 
' Prende l'orario nel momento dell'avvio del programma:
 tm = Now
 
 While Not bo
' La funzione "DateDiff()" passa alla funzione "Time()" la differenza, espressa in millisecondi, tra il corrente orario e quello memorizzato all'avvio del programma.
' La funzione "Time()" passa alla funzione "Write" un valore temporale, consentendo anche di mostrare i millisecondi.
   Write "\r" & Time(0, 0, 0, DateDiff(tm, Now, gb.Millisecond))
   Flush
   Wait 0.01
 Wend

' Consente di terminare il programma nel caso vi sia la subroutine "Application_Read()":
 Quit
 
End


Public Sub Application_Read()  ' Cliccando sul tasto "Invio" della tastiera, si solleva questo Evento
 
 bo = True
 
End

Cronometro che mostra l'orario corrente, usando la funzione "Time"

Per realizzare un semplice cronometro che mostri l'orario attuale, comprensivo di ora, minuti, secondi, nonché di decimi, centesimi e millesimi di secondo, si può usare la funzione "Time".
Mostriamo un esempio in ambiente grafico, nel quale l'orario corrente sarà mostrato nell'intestazione di una finestra:

Public Sub Button1_Click()
 
 Do
   Me.Caption = Format(Time, "hh:nn:ss.uuu")   '[Nota 1]
   Wait 0.001
 Loop
 
End

Volendo, anziché usare un ciclo, sarà possibile usare anche la Classe "Timer".


Note

[1] Questo tipo di formattazione del tempo restituisce:

  • hh = ora;
  • nn = minuti;
  • ss = secondi;
  • uuu = millesimi di secondo.