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

Da Gambas-it.org - Wikipedia.
 
(3 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]''.
==Uso dell'istruzione "File.In.ReadLine()"==
 
Questa modalità utilizza direttamente l'istruzione "File.In.ReadLine()".
 
<BR>Il Metodo "[[.ReadLine()]]" legge dal flusso una riga fino al carattere ''escape'' di "fine riga e a capo".
 
  
Esempio:
+
Modo mostriamo il seguente semplice esempio:
Public Sub Main()
 
 
  Dim s As String
 
 
<FONT Color=gray>' ''Legge una riga di dati dallo "stdin":''</font>
 
  s = File.In.ReadLine()
 
 
  Print s
 
 
End
 
 
 
 
 
==Uso dell'evento ''Application_Read()''==
 
Per questa modalità che si basa sulla sollevazione dell'Evento "_Read()" della Classe ''Application'', si rinvia alla seguente pagina:
 
<BR>https://www.gambas-it.org/wiki/index.php/Uso_della_classe_Application#.Read.28.29
 
 
 
Mmodo mostriamo il seguente semplice esempio:
 
 
  Private bo As Boolean
 
  Private bo As Boolean
 
   
 
   
 
  Public Sub Main()
 
  Public Sub Main()
 
   
 
   
  <FONT Color=gray>' ''Il ciclo continua, funché la viariabile "bo" non sarà diventata "Vera":''</font>
+
  <FONT Color=gray>' ''Il ciclo continua, finché la variabile "bo" non sarà diventata "Vera":''</font>
 
   Repeat
 
   Repeat
 
     wait 0.01
 
     wait 0.01
 
   Until bo
 
   Until bo
 +
 +
  Print "E' stato premuto il tasto 'Invio' !"
 
   
 
   
 
  <FONT Color=gray>' ''Poiché si usa l'Evento "Application_Read()", per terminare il programma è necesario prevedere alla fine l'istruzione "Quit":''</font>
 
  <FONT Color=gray>' ''Poiché si usa l'Evento "Application_Read()", per terminare il programma è necesario prevedere alla fine l'istruzione "Quit":''</font>
Riga 37: Riga 19:
 
   
 
   
 
   
 
   
  Public Sub Application_Read()
+
  Public Sub Application_Read() <FONT Color=gray>' ''Questo Evento sarà sollevato con la pressione del tasto "Invio"</font>
 
   
 
   
 
   bo = True
 
   bo = True
Riga 44: Riga 26:
  
  
==Uso della funzione ''Input''==
+
==Uso dell'istruzione Input==
Questa modalità prevede il semplice uso della funzione ''Input'' in varie possibilità che di seguito si espongono.
+
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 di Input e di una variabile stringa===
+
Mostriamo un esempio pratico:
Questa modalità fa semplicemente uso di ''Input'' ed una variabile di tipo stringa:
+
  Public Sub Main()
  '''Public''' Sub Main()
 
 
   
 
   
 
   Dim s As String
 
   Dim s As String
 
 
  <FONT Color=#B22222>Input s</font>
 
   
 
  Print "Tasto premuto !", s
 
 
   
 
   
  '''End'''
+
  <FONT Color=gray>' ''Il codice si arresta qui, sino a che non sarà premuto il tasto "Invio":''</font>
 
+
  Input s
 
   
 
   
===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
+
  End
 
 
  <FONT Color=#B22222>Input #File.In, s</font>
 
 
 
  Print "Tasto premuto !", s
 
   
 
'''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
 
 
 
  <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
 
  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'''
 
 
 
 
 
===Uso del file-device ''/dev/pts/...''===
 
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
 
 
  fl = Open "<FONT Color=#B22222>/dev/pts/...</font>" For Read
 
 
  <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
 
 
 
  <FONT Color=#B22222>Input #fl, s</font>
 
       
 
  fl.Close
 
 
 
  Print "Tasto premuto !", s
 
 
'''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