Visualizzazione dei risultati da 1 a 9 su 9

Discussione: Visual Basic & Timer

  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2004
    Messaggi
    25

    Visual Basic & Timer

    cioa a tutti vorrei sapere come mai quando avvio il programma il timer viene visualizzato ma nn va avanti viene 0:0:1 ma nn va avanti come mai?
    questo è il codice

    codice:
    Private Sub Timer1_Timer()
    
    Dim ore, Minuti, Secondi, Resto As Integer
    
    Dim StringaOre, StringaMinuti, StringaSecondi
    
    NumSecondi = NumSecondi + 1
    
    ore = Int(NumSecondi / 3600)
    
    Resto = NumSecondi - (ore * 3600)
    
    Minuti = Int(Resto / 60)
    
    Secondi = Resto - (Minuti * 60)
    
    StringaOre = Str$(ore)
    
    StringaMinuti = Str$(Minuti)
    
    StringaSecondi = Str$(Secondi)
    
    Tempo = StringaOre + ":"
    
    Tempo = Tempo + StringaMinuti + ":"
    
    Tempo = Tempo + StringaSecondi
    
    lblMessaggio.Caption = Tempo
    
    End Sub
    grazie per la risp

  2. #2
    Utente di HTML.it L'avatar di MMarzia
    Registrato dal
    Mar 2001
    Messaggi
    1,781
    quale versione di VB? va sempre specificata, anche nel titolo

    e il codice va incluso nell'apposito tag [*code] [*/code] (senza asterischi)
    io sono festosamente cicciottello :: e. cartman

    t'amo senza sapere come, nè quando nè da dove,
    t'amo direttamente senza problemi nè orgoglio:
    così ti amo perchè non so amare altrimenti

  3. #3
    Ciao,
    fai attenzione ai nomi delle variabili: hai dichiarato una
    variabile Secondi ma ne incrementi una chiamata NumSecondi.
    In più, se scrivi:
    codice:
    Dim ore, Minuti, Secondi, Resto As Integer
    specifichi che solo la variabile Resto è di tipo Integer...
    ...tutte le altre saranno di tipo variant. E' un errore molto
    comune che può portarti problemi inattesi, la forma corretta è:
    codice:
    Dim ore As Integer, Minuti As Integer, Secondi As Integer, Resto As Integer
    Ora veniamo al tuo problema:
    Nel codice fai uso di variabili dinamiche, ossia variabili
    dichiarate con Dim. Questo approccio fa si che le tue variabili
    vengano "create" ad ogni esecuzione di quel codice.
    Quindi, ad ogni evento Timer, la variabile secondi (così come le altre) viene inizializzata a 0 con il risultato che l'incremento darà sempre risultato 1.

    Se vuoi conservare il valore di una variabile da un'esecuzione
    all'altra delle tue Sub o Function, devi utilizzare variabili dinamiche a livello di modulo o variabili statiche a livello di procedura.
    Tra i due, ti consiglio il secondo metodo:
    la quantità di memoria utilizzata è la stessa ma almeno non avrai problemi se intendi dichiarare una Secondi in un'altra parte del tuo programma.

    codice:
    Dim ore As Integer, Minuti As Integer Resto As Integer
    Static Secondi As Integer
    Dim StringaOre As String, StringaMinuti As String, StringaSecondi As String
    Nota: ho dichiarato come Static solo la variabile Secondi.
    Il valore delle altre viene calcolato sul suo, quindi non è necessario che Ore, minuti e resto, siano statiche.
    Per contro, se secondi è statica, conserverà il suo valore
    ad ogni esecuzione dell'evento Timer.

    Ciao
    Simo

  4. #4
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    Dim ore, Minuti, Secondi, Resto As Integer

    be sei passato gia al .net

  5. #5
    Originariamente inviato da cassano
    be sei passato gia al .net
    che cavolo stai dicendo?
    se non hai niente di sensato da dire non occorre che schiacci rispondi in continuazione
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

  6. #6
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    come sei severo calma siamo qui per scambiari idee
    forse devo cambiare libro
    pero me pare che facendo cosi
    Dim ore, Minuti, Secondi, Resto As Integer
    si ottengono a differenza di vb 6.0 tutte variabili integer in un solo colpo



    mi scusi umilmente se ho sbagliato ma facendo il debug mi apre che siano tutte integer

  7. #7
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    cassano, hai ragione in VB.Net ed in C la dichiarazione delle variabili è come dici; però in VB6 la detta procedura provoca risultati inattesi (Variant). Quindi in VB6 le variabili si devono dichiarare una per una a secondo della natura dei dati da elaborare.
    Ciao.
    LM

  8. #8
    Utente di HTML.it L'avatar di cassano
    Registrato dal
    Aug 2004
    Messaggi
    3,002
    si lo so la mia era una risposta a questo
    che cavolo stai dicendo?
    cmq senza rancori ci mancherebbe

  9. #9
    Originariamente inviato da cassano
    si lo so la mia era una risposta a questo
    il problema sono i tuoi continui interventi a sproposito non questo in particolare questo è un forum tecnico, se hai qualcosa di interessante da dire o qualcosa da chiedere i tuoi interventi saranno ben accetti, ma per come stai usando ora questo forum non sei per niente contributivo, mi scuso se nella risposta precedente non sono stato molto garbato, ma questo è uno spazio esclusivamente tecnico cerca perciò di mantenere un atteggiamento appropriato.

    chiudo la discussione perchè diventata OT se l'autore non ha nacora trovato una soluzione al suo problema può riaprirne un'altra
    Vascello fantasma dei mentecatti nonchè baronetto della scara corona alcolica, piccolo spuccello di pezza dislessico e ubriaco- Colui che ha modificato l'orribile scritta - Gran Evacuatore Mentecatto - Tristo Mietitore Mentecatto chi usa uTonter danneggia anche te

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2025 vBulletin Solutions, Inc. All rights reserved.