Sincronizza Indice |
Scarica il progetto |
Testo dell'articolo |
Stampa l'articolo |
Quest'articolo è volto a spiegare il processo di conversione di un certo numero di secondi nel corrispondente numero di ore e minuti. L'operazione in sé è molto semplice e richiede l'utilizzo di poche e semplici operazioni aritmetiche.
Essendo un minuto formato da 60 secondi è semplicissimo risalire
al numero di minuti corrispondenti ad un certo numero di secondi; si tratta
in fondo di effettuare una divisione del numero di secondi per 60 e l'eventuale
resto è il numero di secondi rimanenti. Il form si compone di pochi e semplici controlli: la fila superiore contiene una Label di nome lblSecondi e la corrispondente casella di testo di nome txtSecondi per permettere all'utente l'inserimento del numero di secondi. Al fine di evitare possibili errori abbiamo limitato il numero di caratteri nella casella di testo impostando la proprierà MaxLength a 8 caratteri. Nella fila centrale abbiamo 4 Label i cui nomi sono, partendo da sinistra: lblFila1Minuti1 e la corrispondente lblFila1Minuti2, lblFila1Secondi1 e la corrispondente lblFila1Secondi2. L'ultima fila contiene invece 6 Label: lblFila2Ore1 e la corrispondente lblFila2Ore2, lblFila2Minuti1 e la corrispondente lblFila2Minuti2 ed infine lblFila2Secondi1 con la corrispondente lblFila2Secondi2. Tutte le caselle di testo hanno la proprietà AutoSize impostata a True per permettere l'autoridimensionamento in funzione del testo in esse inserito. Il codice si compone di una sola routine, legata all'eventoChange della TextBox txtSecondi:
La prima operazione da effettuare è ovviamente il recupero del numero di secondi dalla TextBox txtSecondi. L'operazione è effettuata alla riga 9 ed utilizza un trucchetto molto semplice ed efficace; infatti se l'utente immettese nella casella di testo qualche simbolo non numerico quale una lettera in altre situazioni si verificherebbe un errore.
La funzione Val, così come la funzione CLng (e CInt,
CDbl, etc....) consente di trasformare una stringa in un numero.
A differenza di tutte le altre funzioni di conversione però, non
è suscettibile ad errori in caso che l'input non sia un numero
ben formato. Ad esempio l'espressione
Possiamo adesso procedere alla conversione dei secondi in ore e minuti. L'operazione più semplice è effettuata alla riga 10; la divisione intera del numero di secondi per 3600 (60*60) restituisce il numero delle ore. Il resto di quest'operazione sono i rimanenti minuti e secondi. In
effetti alla riga 11 recuperiamo il numero di minuti semplicemente detraendo
dal numero di secondi totali il numero di secondi corrispondenti alle
ore intere. Ad esempio se l'utente avesse immesso il numero 27575, il
risultato della riga 10 sarebbe stato 7. La differenza di tale operazione (2375) indica il numero di minuti e secondi. Per recuperare il numero di minuti basterà semplicemente dividere tale valore per 60; nel nostro esempio il risultato è 39 minuti. Infine il numero di secondi è dato dal resto di tale divisione, calcolato tramite il modulo per 60; nel nostro esempio 2375-2340 (39*60) produce il risultato 35.
Possiamo infine procedere ad aggiornare le varie Label presenti sul form. Il numero di secondi è uguale per entrambe le file (righe 13 e 14).
Il numero di minuti sulla prima fila non deve essere scomposto in ore
e minuti e pertanto potrebbe anche essere superiore a 60. Alla riga 15
viene recuperato questo valore semplicemente moltiplicando il numero delle
ore per 60 minuti e sommando questo valore al numero reale dei minuti.
Nel nostro esempio 7*60=420 + 39 = 459 minuti. Il numero di ore è presente soltanto sulla seconda fila (riga
17) ed è contenuto nella variabile Ore. |
Il problema si presenta molto semplice e richiede soltanto alcune operazioni aritmetiche. In maniera del tutto simile può essere calcolato anche il numero di giorni, mesi ed anni. Fibia
FBI
|
Torna all'indice degli HowTo |