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

Da Gambas-it.org - Wikipedia.
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) l'attesa della pressione del tasto ''Invio'', potranno essere utilizzate diverse modalità.
 +
==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:
 +
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
  
  
Riga 6: Riga 21:
 
<BR>https://www.gambas-it.org/wiki/index.php/Uso_della_classe_Application#.Read.28.29
 
<BR>https://www.gambas-it.org/wiki/index.php/Uso_della_classe_Application#.Read.28.29
  
Ad ogni mmodo mostriamo il seguente semplice esempio:
+
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, funché la viariabile "bo" non sarà diventata "Vera":''</font>
Riga 19: Riga 34:
 
   Quit
 
   Quit
 
   
 
   
  '''End'''
+
  End
 +
 
   
 
   
  '''Public''' Sub Application_Read()
+
  Public Sub Application_Read()
 
   
 
   
 
   bo = True
 
   bo = True
 
   
 
   
  '''End'''
+
  End
  
  

Versione delle 14:11, 20 nov 2023

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à.

Uso dell'istruzione "File.In.ReadLine()"

Questa modalità utilizza direttamente l'istruzione "File.In.ReadLine()".
Il Metodo ".ReadLine()" legge dal flusso una riga fino al carattere escape di "fine riga e a capo".

Esempio:

Public Sub Main()

 Dim s As String

' Legge una riga di dati dallo "stdin":
 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:
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

Public Sub Main()

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

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

End


Public Sub Application_Read()

 bo = True

End


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
 
 Input s
   
 Print "Tasto premuto !", s

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
  
  Input #File.In, s
  
  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 "/dev/stdin" For Read
  
  Input #fl, s
  
  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 "/dev/tty" For Read

  Input #fl, s
      
  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 "/dev/pts/..." For Read

  Input #fl, s
          
  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 "/proc/self/fd/0" For Read
  
  Input #fl, s
       
  fl.Close
  
  Print "Tasto premuto !", s

End