Oppure

Loading
18/04/10 15:11
Fr4nk94
Risalve a tutti...
sto costruendo un cronometro sensibile al centesimo di secondo...
ho impostato l'applicazione in modi simile a quella che si può scaricare da questo sito (qui -> pierotofy.it/pages/sorgenti/dettagli/18211-Cronometro/) ma appunto agiungendo i centesimi di secondo...
il mio problema sta in questa parte di codice:
  Private Sub Timer1_Tick(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Timer1.Tick
        Dim sec As Integer = txtTEMPO.Text.Substring(3, 2)
        Dim cen As Integer = txtTEMPO.Text.Substring(6, 1)
        Dim min As Integer = txtTEMPO.Text.Substring(0, 2)

        If cen Mod 99 = 0 And cen > 0 Then
            sec += 1
            txtTEMPO.Text = Format(min, "00") & ":" & Format(sec, "00") & ":00"

        ElseIf sec Mod 59 = 0 And sec > 0 Then
            min += 1
            txtTEMPO.Text = Format(min, "00") & ":00:" & Format(cen, "00")

        Else
            cen += 1
            txtTEMPO.Text = Format(min, "00") & ":" & Format(sec, "00") & ":" & Format(cen, "00")

        End If
    End Sub


praticamente il cronometro nn scorre ( o meglio a 00:00:01 si ferma...:asd: ) e il codice soprariportato l'ho girato in miliardi di modi eppure succede sempre qualcosa di sbagliato...
Qualcuno riesce ad aiutare un povero nabbo ( :pat: ) come me??

(inoltre vi rimando alla mia precedente discussione in cui ho aggiunto una domanda... solo che è un po' in basso e nn si vede quasi più...pierotofy.it/pages/extras/forum/16/1003395-[vbnet_database_co_2/)
GRZ 1000:asd:
Ultima modifica effettuata da Fr4nk94 18/04/10 15:13
aaa
18/04/10 16:40
walker93
mi chiedo il motivo del tuo utilizzo di MOD nelle condizioni...

devi controllare che siano maggiori di 59 o 99 e non controllare se sono pari controllando il resto della divisione

il problema sta nelle condizioni...
aaa
18/04/10 22:23
Gianluca87
Ciao, credo che tu sia totalmente fuori strada...
il programma che hai scritto tu forse era adeguato per VB 6
se usi l'infrastruttura .net prova a guardare le classi DateTime e TimeSpan
aaa
19/04/10 11:36
Thejuster
ti si blocca perchè non azzeri i contantori.
quindi arrivati a 59 o 99 rimane fermo e quindi i numeri non si incremento.

ti posto questo piccolo esempio di codice ottimizzato
spero che ti sia di aiuto :k:
PS. te lo scrivo in c# perchè odio il vb.net :rotfl:



public static int cent = 20, sec = 1, min = 0,ore = 0;
private void Timer1_Tick(Object sender,e args) {

if (cent == 99) sec++; cent = 0;
if (sec == 59) min++; sec = 0;
if (min == 59) ore++; min = 0;

txtTempo.Text = Check(cent) + ":" + Check(sec) + ":" + Check(min);

}

 public static string Check(int value)
        {
            string c = value.ToString();
            return c.Length > 1 ? c : "0" + c;
        }



Ultima modifica effettuata da Thejuster 19/04/10 11:39
mire.forumfree.it/ - Mire Engine
C# UI Designer
20/04/10 16:33
Il Totem
Questo metodo è decisamente poco funzionale. Il tuo cronometro è sottoposto a un numero enorme di errore dovuti al timing e all'approssimazione. Usa semplicemente una differenza di valori Date, che restituisce una differenza di tempi precisa al ciclo di clock e sincronizzata con l'orologio interno del computer (anche se salti un tick del timer, ad esempio, rimane comunque una misura "esatta";).
Date.Now restituisce la data (e l'ora) corrente. La differenza di Date restituisce un valore di tipo TimeSpan. Documentati su msdn.
aaa