Differenze tra le versioni di "Scrivere nello Standard Input di un Terminale con un programma Gambas 'a riga di comando'"
Riga 3: | Riga 3: | ||
Negli esempi a corredo si lancerà il programma Gambas ''a riga di comando'' dal Terminale. Il processo del programma si arresterà attendendo l'immissione di un valore (in questi casi) numerico e la pressione del tasto ''Invio''. Il programma Gambas raccoglierà il valore immesso nel Terminale e lo utilizzerà per una semplice moltiplicazione, il cui risultato sarà mostrato nel Terminale medesimo. | Negli esempi a corredo si lancerà il programma Gambas ''a riga di comando'' dal Terminale. Il processo del programma si arresterà attendendo l'immissione di un valore (in questi casi) numerico e la pressione del tasto ''Invio''. Il programma Gambas raccoglierà il valore immesso nel Terminale e lo utilizzerà per una semplice moltiplicazione, il cui risultato sarà mostrato nel Terminale medesimo. | ||
− | Se si intende raccogliere un valore numerico, allora per la lettura è sufficiente utilizzare l'istruzione ''Input''. Se si intende, invece, raccogliere un valore di tipo "Stringa", allora | + | Se si intende raccogliere un valore numerico, allora per la lettura è sufficiente utilizzare l'istruzione ''Input''. Se si intende, invece, raccogliere un valore di tipo "Stringa" ''formato da due o più caratteri separati da uno spazio'', allora si dovrà ovviamente utilizzare l'istruzione ''Line Input''. |
− | Le modalità, | + | |
+ | |||
+ | ==Con pausa nello scorrimento del codice== | ||
+ | Le modalità, che vedremo di seguito, pongono il programma <SPAN Style="text-decoration:underline">in attesa</span> dell'immissione da parte dell'utente di uno o più caratteri. | ||
===con ''Input'' ed una variabile=== | ===con ''Input'' ed una variabile=== | ||
Riga 113: | Riga 116: | ||
fl.Close | fl.Close | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | |||
+ | ==Senza pausa nello scorrimento del codice== | ||
+ | Se invece il programma prevede ad esempio un ciclo o altra procedura (<SPAN Style="text-decoration:underline">senza che vi sia così un arresto, una pausa nello scorrimento del codice</span> come nei casi precedenti) che offre all'utente la possibilità di inviare eventualmente un valore (magari per uscire dal ciclo medesimo), allora si utilizzerà l'evento ''_Read()'' della Classe ''Application''. | ||
+ | |||
+ | Mostriamo un esempio: | ||
+ | Private s As String | ||
+ | |||
+ | |||
+ | '''Public''' Sub Main() | ||
+ | |||
+ | Do | ||
+ | Wait 0.01 | ||
+ | Loop Until s <> Null | ||
+ | |||
+ | Print "Uscito dal ciclo !" | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | '''Public''' Sub <FONT Color=#B22222>Application_Read()</font> | ||
+ | |||
+ | Input s | ||
'''End''' | '''End''' |
Versione delle 03:39, 19 ago 2015
Per scrivere nello Standard Input di un Terminale con un programma Gambas "a riga di comando", in modo tale che il processo di svolgimento di detto programma resti in attesa dell'immissione dei dati nel Terminale, si potranno utilizzare almeno cinque modalità.
Negli esempi a corredo si lancerà il programma Gambas a riga di comando dal Terminale. Il processo del programma si arresterà attendendo l'immissione di un valore (in questi casi) numerico e la pressione del tasto Invio. Il programma Gambas raccoglierà il valore immesso nel Terminale e lo utilizzerà per una semplice moltiplicazione, il cui risultato sarà mostrato nel Terminale medesimo.
Se si intende raccogliere un valore numerico, allora per la lettura è sufficiente utilizzare l'istruzione Input. Se si intende, invece, raccogliere un valore di tipo "Stringa" formato da due o più caratteri separati da uno spazio, allora si dovrà ovviamente utilizzare l'istruzione Line Input.
Indice
- 1 Con pausa nello scorrimento del codice
- 1.1 con Input ed una variabile
- 1.2 con la proprietà #File.In ed una variabile
- 1.3 con l'apertura in lettura del file-device stdin del Terminale
- 1.4 con l'apertura in lettura del file speciale pts del Terminale
- 1.5 con l'apertura in lettura del file-descriptor del Terminale
- 1.6 con l'apertura in lettura del file-device tty
- 2 Senza pausa nello scorrimento del codice
Con pausa nello scorrimento del codice
Le modalità, che vedremo di seguito, pongono il programma in attesa dell'immissione da parte dell'utente di uno o più caratteri.
con Input ed una variabile
Questa è la modalità più semplice, la quale prevede l'istruzione Input seguita semplicemente da una variabile.
Esempio:
Public Sub Main() Dim v As Integer Input v Print v * 10 End
con la proprietà #File.In ed una variabile
Quest'altra modalità prevede l'uso della proprietà .In della Classe File con il prefisso #, e seguita da una variabile.
Esempio:
Public Sub Main() Dim v As Integer Input #File.In, v Print v * 10 End
con l'apertura in lettura del file-device stdin del Terminale
Questa modalità prevede l'apertura in lettura del file-device /dev/stdin relativo al Terminale, ove è stato lanciato il programma Gambas. Esempio:
Public Sub Main() Dim v As Integer Dim fl As File fl = Open "/dev/stdin" For Read Input #fl, v Print v * 10 fl.Close End
con l'apertura in lettura del file speciale pts del Terminale
Questa modalità prevede l'apertura in lettura del file speciale pts relativo al Terminale, ove è stato lanciato il programma Gambas.
Esempio:
Public Sub Main() Dim v As Integer Dim fl As File ' Va individuato preventivamente il numero del file speciale "pts" relativo al Terminale, ove è stato lanciato il programma Gambas: fl = Open "/dev/pts/n" For Read Input #fl, v Print v * 10 fl.Close End
con l'apertura in lettura del file-descriptor del Terminale
Questa modalità prevede l'apertura in lettura del file-descriptor relativo al Terminale, ove è stato lanciato il programma Gambas.
Esempio:
Public Sub Main() Dim v As Integer Dim fl As File ' Va individuato preventivamente il numero del "processo" identificativo del Terminale, ove è stato lanciato il programma Gambas: fl = Open "/proc/numero del processo/fd/0" For Read Input #fl, v fl.Close End
con l'apertura in lettura del file-device tty
Questa modalità prevede l'apertura in lettura del file-device tty, il quale rappresenta la console usata dal processo, relativo al Terminale ove è stato lanciato il programma Gambas:</font>
Esempio:
Public Sub Main() Dim v As Integer Dim fl As File fl = Open "/dev/tty" For Read Input #fl, v Print v * 10 fl.Close End
Senza pausa nello scorrimento del codice
Se invece il programma prevede ad esempio un ciclo o altra procedura (senza che vi sia così un arresto, una pausa nello scorrimento del codice come nei casi precedenti) che offre all'utente la possibilità di inviare eventualmente un valore (magari per uscire dal ciclo medesimo), allora si utilizzerà l'evento _Read() della Classe Application.
Mostriamo un esempio:
Private s As String Public Sub Main() Do Wait 0.01 Loop Until s <> Null Print "Uscito dal ciclo !" End Public Sub Application_Read() Input s End