Gambas-it

Gambas3 => Programmazione => Topic aperto da: kicco - 30 Aprile 2019, 14:26:19

Titolo: [Risolto] L'evento click rende sorda la sua routine?
Inserito da: kicco - 30 Aprile 2019, 14:26:19
 :ciao:
Il titolo è un po' d'effetto! :D
Codice: [Seleziona]
' Gambas class file

Static Bol As Boolean = 0

Public Sub BT_parti_Click()

  Dim i As Integer

  Print "Start"
  For i = 1 To 1000

    If Bol = 1 Then

      Print "Fermato"
      Break
    Endif
    Wait 0.01
  Next

  Print "Finito"

End

Public Sub BT_ferma_Click()

  Bol = 1
  Print "Fermata prenotata"

End
Stavo provando e giocando.
In breve, non riesco ad uscire dalla routine che è attivata dal pulsante BT_parti perchè, se anche la variabile booleana Bol cambia, per opera del pulsante BT_ferma, la routine BT_parti non se ne accorge.!
In questo caso come si fa? Qualcuno ha idee?
 :ciao: :ciao:
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: Arco - 30 Aprile 2019, 14:58:08
Finchè non finisce i ciclo For i = 1 To 1000 non puoi eseguire nessuna altra parte del programma.
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: kicco - 30 Aprile 2019, 15:24:19
 :ciao:
Citazione
Finché non finisce i ciclo For i = 1 To 1000 non puoi eseguire nessuna altra parte del programma.
Non ne sono sicuro sai!
Premendo il pulsante BT_ferma, durante l'esecuzione del loop, la variabile Bol cambia e il print viene eseguito.
È qualcos'altro!  :-\
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: kicco - 30 Aprile 2019, 15:37:12
Intanto ho scoperto che al primo RUN del programma in consolle non viene scritto nulla, se non alla fine dell'intera esecuzione del programma. La seconda volta invece vengono scritti i Print man mano che si presentano nell'esecuzione.
Ma la cosa più strana è che se la variabile booleana la dichiaro e cambio usando 0 e 1 la routine non funziona.
Se la variabile la gestisco con FALSE e TRUE invece funzia!!! :hard:
 :'(
Baco del programma o dell'operatore?  :D
 :ciao:
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: Gianluigi - 30 Aprile 2019, 17:41:23
Scusa per la brevissima attenzione che ti dedico  :-*
A occhio credo sia dovuto al fatto che usi boolean in modo non corretto.
Cambia con false e true e dovrebbe funzionare, oppure usa un integer.
Spero che il suggerimento sia corretto, a più tardi.

 :ciao: :ciao:

Infatti non avevo letto tutto  :-[
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: Gianluigi - 30 Aprile 2019, 18:31:01
Ho dimenticato di aggiungere questo, prova questo codice:
Codice: [Seleziona]
Public Sub Form_Open()

  Print CInt(True)
  Print CInt(False)

End

Quindi puoi cambiare il codice così:
Codice: [Seleziona]
Static Bol As Boolean

Public Sub BT_parti_Click()

  Dim i As Integer

  Print "Start"
  For i = 1 To 1000

    If Bol Then

      Print "Fermato"
      Break
    Endif
    Wait 0.01
  Next

  Print "Finito"

End

Public Sub BT_ferma_Click()

  Bol = -1
  Print "Fermata prenotata"

End

 :ciao:
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: kicco - 30 Aprile 2019, 19:11:56
 :ciao:
Grazie Gianluigi, mi hai fatto scoprire una cosa che non sapevo.
Da Wikipedia:
Citazione
In alcuni linguaggi, come il C, non esistono variabili di questo tipo in quanto nelle espressioni logiche si assume che falso corrisponda a 0 e vero a qualsiasi valore diverso da 0. Formalmente si indica il valore vero con -1 essendo esso il complemento a uno di 0 (falso), quindi la negazione bit a bit di una variabile.
Ero assolutamente convinto che vero (TRUE) equivalesse solo e solamente a 1!
Il bello di giocare intelligentemente e avere un forum di persone preparate! :P
Danke!  :2birre:
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: Top Fuel - 01 Maggio 2019, 00:22:09
Infatti False vale 0 mentre per True viene fatto un Not di False (o viceversa, cambia nulla), visto che sono uno il contrario dell'altro, quindi anche i bit devono essere gli uni i contrari degli altri.
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: vuott - 01 Maggio 2019, 02:11:28
http://www.gambas-it.org/smf/index.php?topic=6927.0
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: allegfede - 02 Maggio 2019, 16:43:29
prova usando "wait" nel ciclo, in questo modo processa la coda degli eventi in modo asincrono
Titolo: Re:L'evento click rende sorda la sua routine?
Inserito da: kicco - 02 Maggio 2019, 16:55:04
Citazione
prova usando "wait" nel ciclo...
:rolleyes:
L'ho usato!
 :ciao:
Titolo: Re:[Risolto] L'evento click rende sorda la sua routine?
Inserito da: kicco - 18 Agosto 2019, 20:46:43
a proposito di:
Citazione
Ero assolutamente convinto che vero (TRUE) equivalesse solo e solamente a 1!
http://forum.gambas.one/viewtopic.php?f=4&t=738 (http://forum.gambas.one/viewtopic.php?f=4&t=738)
Mi ha fatto sentire meno solo! E Cedron non è certo l'ultimo arrivato! Mi consolo!  :2birre:
Mi sono dato anch'io il colpo sulla fronte!
 :ciao:
Titolo: Re:[Risolto] L'evento click rende sorda la sua routine?
Inserito da: Top Fuel - 18 Agosto 2019, 20:50:07
Queste sono cose che chi ha cominciato a programmare 30 anni fa conosce bene... ;)