Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 11
  1. #1

    [VB6] EXE file, MSGBOX non ferma il Timer!

    Ciao a tutti!

    Ho un problema strano con Visual Basic 6.

    Praticamente, ho un form, un timer, una label per vedere i secondi passati, e un bottone che premuto fa comparire un msgbox.

    Mentre sono nell'ambiente di sviluppo, se schiaccio il bottone, compare il message box eil timer si ferma!. Fin qui tutto ok.

    MA, compilando il programma e creando l'.EXE (l'eseguibile), e rifacendo la stessa prova, IL TIMER NON SI FERMA PIU'.

    Mentre a me interessa che, avendo l'exe file, premendo il bottone col message box msgbox, il TIMER si fermi!

    Grazie della comprensione e dell'aiuto che mi potrete fornirmi!

    FreeMan
    Freeman

  2. #2
    Utente di HTML.it L'avatar di oregon
    Registrato dal
    Jul 2005
    residenza
    Roma
    Messaggi
    36,480
    E non lo puoi fermare tu?
    No MP tecnici (non rispondo nemmeno!), usa il forum.

  3. #3
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Moderazione

    Originariamente inviato da Freeman1990
    MA, compilando il programma e creando l'.EXE (l'eseguibile), e rifacendo la stessa prova, IL TIMER NON SI FERMA PIU'.
    Posta il codice (formattandolo come da Regolamento).
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  4. #4

    Re: Moderazione

    Originariamente inviato da alka
    Posta il codice (formattandolo come da Regolamento).
    Il problema non è nel codice, perché il giochino è davvero semplicissimo, anche mia nonna saprebbe programmarlo =)

    Il problema è che mentre si è nell'ambiente VB, il Timer si ferma (premendo il bottone e facendo comparire il MsgBox),
    invece, mentre si crea l'.EXE file ( per distribuirlo=darlo a un amico per es.), non lo fa più!
    Cioè il Timer va avanti per i c**** suoi anche se c'è il MsgBox!

    E' un bug talmente strano e banale che mi viene voglia di ... piangere.

    cmq, per dovere di cronaca...

    codice:
    Option Explicit
    
    Private Sub Command1_Click() 
         MsgBox "il timer si ferma o no?"
    End Sub
    
    Private Sub Form_Load()
          Timer1.Enabled = True
          Timer1.Interval = 1000
    End Sub
    
    Private Sub Timer1_Timer() 
         Label1.Caption = CStr(Time) 
    End Sub
    Freeman

  5. #5
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472

    Re: Re: Moderazione

    Originariamente inviato da Freeman1990
    Il problema non è nel codice, perché il giochino è davvero semplicissimo, anche mia nonna saprebbe programmarlo =)
    Al 99,99% il problema è senz'altro nel codice: ho usato il timer milioni di volte quando programmavo in VB6 (brutti tempi), e problemi di questo tipo non li ho mai riscontrati.

    Originariamente inviato da Freeman1990
    cmq, per dovere di cronaca...
    Dov'è l'istruzione che disabilita il timer?
    Hai postato tutto il codice?
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jul 2008
    Messaggi
    758
    Il timer non si ferma e non si deve fermare. Caso mai è la label che non aggiorna il suo contenuto, in presenza di una finestra modale.

  7. #7
    Originariamente inviato da Grumpy
    Il timer non si ferma e non si deve fermare. Caso mai è la label che non aggiorna il suo contenuto, in presenza di una finestra modale.
    Ribadisco che il timer non si ferma col msgbox solo nel file EXE, una volta creato l'eseguibile, mentre nell'ambiente di sviluppo tutto funzika! :P

    Certo, potrei risolvere il problema mettendo l'istruzione: "timer1.enabled = false" oppure "timer1.interval=0" ogni qualvolta deve comparire il msgbox,

    ma pensavo lo facesse (fermare tutti i timer dell'app) in automatico, un po' come succede in Windows: se non clicchi ok, non va avanti nessuna cosa.

    Pensavo fosse un'opzione da settare,
    o magari un particolare della compilazione...
    non riesco a trovarlo.


    Mi sa che per ora mi dovrò accontentare di mettere dappertutto le righette di codice....
    Freeman

  8. #8
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,472
    Originariamente inviato da Freeman1990
    Ribadisco che il timer non si ferma col msgbox solo nel file EXE, una volta creato l'eseguibile, mentre nell'ambiente di sviluppo tutto funzika! :P
    Tutt'al più, può essere un effetto collaterale del debugger quando esegui il programma all'interno di Visual Basic, e poco altro.

    Se vuoi arrestare un timer, lo fermi in modo esplicito, anche per una questione di sicurezza e garanzia del risultato.
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  9. #9
    Grazie Alka! Direi che con questo, problema risolto!

    Niente automatico... tutto manuale... Buona Fortuna!
    Freeman

  10. #10
    Ciao.
    Si coglie un po di 'ironia' o è un'impressione sbagliata...? eheh!
    Comunque, forse dico una cavolata, ma il far apparire un 'MsgBox(...)' non è detto che interrompa sempre l'esecuzione del programma, in genere il codice scritto nella routine dove è posto lui stesso, si, ma non sempre.
    Inoltre credo che un controllo 'Timer' abbia una vita indipendente all'apparizione di qualsiasi 'MsgBox()', per farlo smettere devi mettere il codice di disattivazione, c'è poco da insistere su quello che fa o non fa il 'tuo' ambiente di editing/sviluppo...
    Saluti.
    Un salutone dall'Alta Maremma...!

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.