Differenze tra le versioni di "Attendere in un'applicazione 'a riga di comando' la pressione del tasto 'Invio'"

Da Gambas-it.org - Wikipedia.
 
(5 versioni intermedie di uno stesso utente non sono mostrate)
Riga 1: Riga 1:
Per determinare in un'applicazione "''a riga di comando''" (quindi lanciata da Terminale) l'attesa della pressione del tasto ''Invio'', potranno essere utilizzate diverse modalità.
+
Per determinare in un'applicazione ''a riga di comando'' (quindi lanciata da Terminale) la semplice e <SPAN Stye="text-decoration:underline">sola</span> attesa della pressione del tasto ''Invio'', potrà essere utilizzato l'Evento "_Read()" della Classe ''[https://www.gambas-it.org/wiki/index.php/Uso_della_classe_Application#.Read.28.29 Application]''.
  
 
+
Modo mostriamo il seguente semplice esempio:
==Uso dell'evento ''Application_Read()''==
+
  Private bo As Boolean
Per questa modalità che si basa sulla sollevazione dell'Evento "_Read()" della Classe ''Application'', si rinvia alla seguente pagina:
 
https://www.gambas-it.org/wiki/index.php/Uso_della_classe_Application#.Read.28.29
 
 
 
 
 
 
 
==Uso della funzione ''Input''==
 
Questa modalità prevede il semplice uso della funzione ''Input'' in varie possibilità che di seguito si espongono.
 
 
 
===Uso di Input e di una variabile stringa===
 
Questa modalità fa semplicemente uso di ''Input'' ed una variabile di tipo stringa:
 
  '''Public''' Sub Main()
 
 
   
 
   
  Dim s As String
+
Public Sub Main()
 
 
  <FONT Color=#B22222>Input s</font>
 
   
 
  Print "Tasto premuto !", s
 
 
   
 
   
  '''End'''
+
  <FONT Color=gray>' ''Il ciclo continua, finché la variabile "bo" non sarà diventata "Vera":''</font>
 
+
  Repeat
 +
    wait 0.01
 +
  Until bo
 
   
 
   
===Uso della proprietà ''File.In''===
+
  Print "E' stato premuto il tasto 'Invio' !"
Questa modalità fa uso in modo diretto della proprietà ''File.In'' che ritorna lo standard input del flusso:
 
'''Public''' Sub Main()
 
 
   
 
   
  Dim s As String
+
<FONT Color=gray>' ''Poiché si usa l'Evento "Application_Read()", per terminare il programma è necesario prevedere alla fine l'istruzione "Quit":''</font>
 
+
  Quit
  <FONT Color=#B22222>Input #File.In, s</font>
 
 
 
  Print "Tasto premuto !", s
 
 
   
 
   
  '''End'''
+
  End
 
 
 
 
===Uso del file-device ''/dev/stdin''===
 
Questa modalità fa uso del file-device ''/dev/stdin'' che dovrà essere aperto in lettura:
 
'''Public''' Sub Main()
 
 
   
 
   
  Dim fl As File
 
  Dim s As String
 
 
   
 
   
  fl = Open "<FONT Color=#B22222>/dev/stdin</font>" For Read
+
Public Sub Application_Read() <FONT Color=gray>' ''Questo Evento sarà sollevato con la pressione del tasto "Invio"</font>
 
 
  <FONT Color=#B22222>Input #fl, s</font>
 
 
 
  fl.Close
 
   
 
  Print "Tasto premuto !", s
 
 
 
'''End'''
 
 
 
 
 
===Uso del file-device ''/dev/tty''===
 
Questa modalità fa uso del file-device ''/dev/tty'' che dovrà essere aperto in lettura:
 
'''Public''' Sub Main()
 
 
   
 
   
   Dim fl As File
+
   bo = True
  Dim s As String
 
 
   
 
   
  fl = Open "<FONT Color=#B22222>/dev/tty</font>" For Read
+
  End
   
+
 
  <FONT Color=#B22222>Input #fl, s</font>
 
     
 
  fl.Close
 
 
 
  Print "Tasto premuto !", s
 
 
'''End'''
 
  
 +
==Uso dell'istruzione Input==
 +
Volendo, si potrà usare anche l'istruzione ''Input''. Contestualmente si dovrà usare anche una variabile di tipo Stringa che servirà soltanto per consentire l'uso dell'istruzione ''Input''.
  
===Uso del file-device ''/dev/pts/...''===
+
Mostriamo un esempio pratico:
Questa modalità fa uso del file-device ''/dev/pts/...'' specifico del Terminale nel quale è stata lanciata la nostra applicazione ''a riga di comando''. Lo specifico file-device di tipo ''pts'', è identificato con un numero che però andrà preventivamente individuato e dovrà essere aperto in lettura:
+
  Public Sub Main()
  '''Public''' Sub Main()
 
 
   
 
   
  Dim fl As File
 
 
   Dim s As String
 
   Dim s As String
 
   
 
   
  fl = Open "<FONT Color=#B22222>/dev/pts/...</font>" For Read
+
  <FONT Color=gray>' ''Il codice si arresta qui, sino a che non sarà premuto il tasto "Invio":''</font>
   
+
   Input s
  <FONT Color=#B22222>Input #fl, s</font>
 
         
 
  fl.Close
 
 
 
  Print "Tasto premuto !", s
 
 
'''End'''
 
 
 
 
 
===Uso del file ''/proc/self/fd/0''===
 
Questa modalità fa uso del file ''/proc/self/fd/0'' che dovrà essere aperto in lettura:
 
'''Public''' Sub Main()
 
 
   Dim fl As File
 
  Dim s As String
 
 
   
 
   
  fl = Open "<FONT Color=#B22222>/proc/self/fd/0</font>" For Read
+
  Print "E' stato premuto il tasto 'Invio' !"
 
 
  <FONT Color=#B22222>Input #fl, s</font>
 
       
 
  fl.Close
 
 
 
  Print "Tasto premuto !", s
 
 
   
 
   
  '''End'''
+
  End

Versione attuale delle 15:40, 20 nov 2023

Per determinare in un'applicazione a riga di comando (quindi lanciata da Terminale) la semplice e sola attesa della pressione del tasto Invio, potrà essere utilizzato l'Evento "_Read()" della Classe Application.

Modo mostriamo il seguente semplice esempio:

Private bo As Boolean

Public Sub Main()

' Il ciclo continua, finché la variabile "bo" non sarà diventata "Vera":
 Repeat
   wait 0.01
 Until bo

 Print "E' stato premuto il tasto 'Invio' !"

' Poiché si usa l'Evento "Application_Read()", per terminare il programma è necesario prevedere alla fine l'istruzione "Quit":
 Quit

End


Public Sub Application_Read() ' Questo Evento sarà sollevato con la pressione del tasto "Invio"

 bo = True

End


Uso dell'istruzione Input

Volendo, si potrà usare anche l'istruzione Input. Contestualmente si dovrà usare anche una variabile di tipo Stringa che servirà soltanto per consentire l'uso dell'istruzione Input.

Mostriamo un esempio pratico:

Public Sub Main()

 Dim s As String

' Il codice si arresta qui, sino a che non sarà premuto il tasto "Invio":
 Input s

 Print "E' stato premuto il tasto 'Invio' !"

End