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

Da Gambas-it.org - Wikipedia.
 
(17 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'evento ''Application_Read()''==
 
Questa modalità è mostrata anche in [[Uso_della_classe_Application#Read.28.29|questa pagina della WIKI]], esi basa sulla sollevazione dell'evento ''_Read()'' della Classe ''Application''.
 
 
 
Per una dimostrazione pratica si rinvia alla [[Uso_della_classe_Application#Read.28.29|predetta pagina della WIKI]].
 
 
 
 
 
==Uso di un ciclo ''Do...Loop Until...''==
 
Questa modalità prevede un ciclo che continuerà sino a che una variabile di tipo stringa non assume un valore determinato dalla pressione del tasto ''Invio''.
 
 
 
All'interno del ciclo verrà posta l'istruzione ''Read'' per la lettura - a seconda dei casi - del flusso aperto.
 
  
 +
Modo mostriamo il seguente semplice esempio:
 +
Private bo As Boolean
 
   
 
   
===Uso della proprietà ''File.In''===
+
  Public Sub Main()
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>' ''Il ciclo continua, finché la variabile "bo" non sarà diventata "Vera":''</font>
 +
   Repeat
 +
    wait 0.01
 +
  Until bo
 
   
 
   
  Do
+
  Print "E' stato premuto il tasto 'Invio' !"
    <FONT Color=#B22222>Read #File.In, s, -256</font>
 
  Loop Until s <> Null
 
 
   
 
   
  Print "Tasto premuto !"
+
<FONT Color=gray>' ''Poiché si usa l'Evento "Application_Read()", per terminare il programma è necesario prevedere alla fine l'istruzione "Quit":''</font>
 +
  Quit
 
   
 
   
  '''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>
 
   
 
   
  Do
+
  bo = True
    <FONT Color=#B22222>Read #fl, s, -256</font>
 
  Loop Until s <> Null
 
 
   
 
   
  Print "Tasto premuto !"
+
  End
   
 
'''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
 
 
  Do
 
    <FONT Color=#B22222>Read #fl, s, -256</font>
 
  Loop Until s <> Null
 
 
  Print "Tasto premuto !"
 
 
'''End'''
 
 
 
  
===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 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
  Do
 
    <FONT Color=#B22222>Read #fl, s, -256</font>
 
  Loop Until s <> Null
 
 
   
 
   
  Print "Tasto premuto !"
+
  Print "E' stato premuto il tasto 'Invio' !"
 
   
 
   
  '''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