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

Da Gambas-it.org - Wikipedia.
 
(7 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
Questa modalità è mostrata anche in [[Uso_della_classe_Application#Read.28.29|questa pagina della WIKI]], alla quale si rinvia, e si basa sulla sollevazione dell'evento ''_Read()'' della Classe ''Application''.
 
 
 
 
 
 
 
==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 !"
 
 
   
 
   
  '''End'''
+
  <FONT Color=gray>' ''Il ciclo continua, finché la variabile "bo" non sarà diventata "Vera":''</font>
Se, però, si vuole conoscere anche il carattere o i caratteri scritti, in ''questo'' caso si utilizzerà un ciclo di attesa:
+
  Repeat
'''Public''' Sub Main()
+
    wait 0.01
 +
  Until bo
 
   
 
   
   Dim s As String
+
   Print "E' stato premuto il tasto 'Invio' !"
 
   
 
   
  Do
+
<FONT Color=gray>' ''Poiché si usa l'Evento "Application_Read()", per terminare il programma è necesario prevedere alla fine l'istruzione "Quit":''</font>
    <FONT Color=#B22222>Input s</font>
+
  Quit
  Loop Until s <> Null
 
 
   
 
   
  Print "Tasto premuto !"
+
End
 
   
 
   
'''End'''
 
 
 
===Uso della proprietà ''File.In''===
 
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=#B22222>Input #File.In, s</font>
 
 
 
  Print "Tasto premuto !", s
 
 
   
 
   
  '''End'''
+
  Public Sub Application_Read() <FONT Color=gray>' ''Questo Evento sarà sollevato con la pressione del tasto "Invio"</font>
 
 
 
 
===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
+
   bo = True
  Dim s As String
 
 
   
 
   
  fl = Open "<FONT Color=#B22222>/dev/stdin</font>" For Read
+
  End
 
 
  <FONT Color=#B22222>Input #fl, s</font>
 
 
 
  fl.Close
 
   
 
  Print "Tasto premuto !", s
 
 
 
  '''End'''
 
  
  
===Uso del file-device ''/dev/tty''===
+
==Uso dell'istruzione Input==
Questa modalità fa uso del file-device ''/dev/tty'' che dovrà essere aperto in lettura:
+
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''.
'''Public''' Sub Main()
 
 
  Dim fl As File
 
  Dim s As String
 
 
  fl = Open "<FONT Color=#B22222>/dev/tty</font>" For Read
 
 
  <FONT Color=#B22222>Input #fl, s</font>
 
     
 
  fl.Close
 
 
 
  Print "Tasto premuto !", s
 
 
'''End'''
 
  
 
+
Mostriamo un esempio pratico:
===Uso del file-device ''/dev/pts/...''===
+
  Public Sub Main()
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()
 
 
   
 
   
  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