Differenze tra le versioni di "Rendere la console dell'IDE funzionale come un Terminale"

Da Gambas-it.org - Wikipedia.
Riga 4: Riga 4:
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
    Exec [System.Shell]
+
  Exec [System.Shell]
 
   
 
   
 
  '''End'''
 
  '''End'''
Si potrà anche scegliere la "shell" da utilizzare assegnandola alla Proprietà ".Shell".
+
Si potrà anche scegliere la "shell" da utilizzare, assegnandola alla Proprietà ".Shell".
 
<BR>Esempio:
 
<BR>Esempio:
 
  System.Shell = System.Find("bash")
 
  System.Shell = System.Find("bash")
Riga 19: Riga 19:
 
   
 
   
 
  <FONT color=gray>' ''Gestiamo il processo, creato da "Exec", mediante una variabile di tipo "Process":''</font>
 
  <FONT color=gray>' ''Gestiamo il processo, creato da "Exec", mediante una variabile di tipo "Process":''</font>
  pr = Exec [System.Shell]
+
  pr = Exec [System.Shell]
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 27: Riga 27:
 
   
 
   
 
  <FONT color=gray>' ''Distruggiamo il processo creato con "Exec":''</font>
 
  <FONT color=gray>' ''Distruggiamo il processo creato con "Exec":''</font>
  <FONT color=B22222>pr.Kill</font>
+
  <FONT color=B22222>pr.Kill</font>
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 34: Riga 34:
 
==Lanciare comandi e programmi dalla console dell'IDE di Gambas==
 
==Lanciare comandi e programmi dalla console dell'IDE di Gambas==
 
In particolare si potranno lanciare in tal modo dalla console comandi ''bash'' e programmi in generale sia scrivendoli manualmente (proprio come in un Terminale), sia in alternativa - come nell'esempio che segue - via codice con l'uso di ''Process'':
 
In particolare si potranno lanciare in tal modo dalla console comandi ''bash'' e programmi in generale sia scrivendoli manualmente (proprio come in un Terminale), sia in alternativa - come nell'esempio che segue - via codice con l'uso di ''Process'':
  '''Private''' pr As Process
+
  Private pr As Process
 
   
 
   
 
   
 
   
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
    pr = Exec [System.Shell] For Write
+
  pr = Exec [System.Shell] For Write
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 46: Riga 46:
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
    Print #pr, "whereis gambas"
+
  Print #pr, "whereis gambas"
 
   
 
   
    Print #pr, "gedit"
+
  Print #pr, "gedit"
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 54: Riga 54:
  
 
Inoltre, via codice sarà anche possibile raccogliere i dati di risultato dalla console, ponendo sotto osservazione il processo della ''shell'', per gestirli altrove:
 
Inoltre, via codice sarà anche possibile raccogliere i dati di risultato dalla console, ponendo sotto osservazione il processo della ''shell'', per gestirli altrove:
  '''Private''' pr As Process
+
  Private pr As Process
 
   
 
   
 
   
 
   
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
    pr = Exec [System.Shell] For Read Write As "processo"
+
  pr = Exec [System.Shell] For Read Write As "processo"
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 66: Riga 66:
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
   
 
   
    Print #pr, "whereis gambas"
+
  Print #pr, "whereis gambas"
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 74: Riga 74:
 
   
 
   
 
   Dim s As String
 
   Dim s As String
 
 
 
   
 
   
  Line Input #pr, s
+
  Line Input #pr, s
 
    
 
    
  TextArea1.Text &= s & "\n"
+
  TextArea1.Text &= s & "\n"
 
    
 
    
 
  '''End'''
 
  '''End'''
Riga 85: Riga 84:
 
==Intercettare il testo scritto nella console dell'IDE di gambas==
 
==Intercettare il testo scritto nella console dell'IDE di gambas==
 
L'attribuzione delle funzionalità tipiche di un terminale alla console dell'IDE di Gambas consente inoltre di poter intercettare e gestire altrove quanto viene semplicemente scritto nella console medesima. Dopo aver scritto il testo nella console, l'utente dovrà <SPAN style="text-decoration:underline">premere per ogni riga di testo il tasto "''Return''" od il tasto "''Invio''"</span>:
 
L'attribuzione delle funzionalità tipiche di un terminale alla console dell'IDE di Gambas consente inoltre di poter intercettare e gestire altrove quanto viene semplicemente scritto nella console medesima. Dopo aver scritto il testo nella console, l'utente dovrà <SPAN style="text-decoration:underline">premere per ogni riga di testo il tasto "''Return''" od il tasto "''Invio''"</span>:
  '''Private''' pr As Process
+
  Private pr As Process
  '''Private''' fl As File  
+
  Private fl As File  
 
   
 
   
 
   
 
   
 
  '''Public''' Sub Form_Open()
 
  '''Public''' Sub Form_Open()
 
   
 
   
    pr = Exec [System.Shell] For Write
+
  pr = Exec [System.Shell] For Write
 
   
 
   
 
  <FONT color=gray>' ''Apriamo in lettura e sottoponiamo in osservazione lo standard Out:''</font>
 
  <FONT color=gray>' ''Apriamo in lettura e sottoponiamo in osservazione lo standard Out:''</font>
    fl = Open "/dev/stdout" For Read Watch
+
  fl = Open "/dev/stdout" For Read Watch
 
   
 
   
 
  '''End'''
 
  '''End'''
Riga 103: Riga 102:
 
   Dim s As String
 
   Dim s As String
 
    
 
    
+
  Line Input #fl, s
  Line Input #fl, s
 
 
    
 
    
  TextArea1.Text &= s
+
  TextArea1.Text &= s
 
    
 
    
  Print "Osservato: "; s
+
  Print "Osservato: "; s
 
   
 
   
 
  '''End'''
 
  '''End'''
 
 
   
 
   
 
  '''Public''' Sub Button1_Click()
 
  '''Public''' Sub Button1_Click()
 
    
 
    
 
  <FONT color=gray>' ''Per andare "a capo" nella TextArea:''</font>
 
  <FONT color=gray>' ''Per andare "a capo" nella TextArea:''</font>
  TextArea1.Text &= Chr(10)
+
  TextArea1.Text &= Chr(10)
 
    
 
    
 
  '''End'''
 
  '''End'''

Versione delle 15:52, 11 nov 2021

E' possibile rendere funzionale la console dell'IDE di Gambas similmente ad un Terminale.

Per ottenere questo risultato è necessario lanciare da codice la shell mediante il comando Exec[] nel modo che segue:

Public Sub Button1_Click()

 Exec [System.Shell]

End

Si potrà anche scegliere la "shell" da utilizzare, assegnandola alla Proprietà ".Shell".
Esempio:

System.Shell = System.Find("bash")


Per disattivare tale funzionalità, bisognerà gestirne il processo con Process e distruggerlo mediante il metodo .Kill:

Private pr As Process


Public Sub Button1_Click()

' Gestiamo il processo, creato da "Exec", mediante una variabile di tipo "Process":
 pr = Exec [System.Shell]

End


Public Sub Button2_Click()

' Distruggiamo il processo creato con "Exec":
 pr.Kill

End


Lanciare comandi e programmi dalla console dell'IDE di Gambas

In particolare si potranno lanciare in tal modo dalla console comandi bash e programmi in generale sia scrivendoli manualmente (proprio come in un Terminale), sia in alternativa - come nell'esempio che segue - via codice con l'uso di Process:

Private pr As Process


Public Sub Form_Open()

 pr = Exec [System.Shell] For Write

End


Public Sub Button1_Click()

 Print #pr, "whereis gambas"

 Print #pr, "gedit"

End


Inoltre, via codice sarà anche possibile raccogliere i dati di risultato dalla console, ponendo sotto osservazione il processo della shell, per gestirli altrove:

Private pr As Process


Public Sub Form_Open()

 pr = Exec [System.Shell] For Read Write As "processo"

End


Public Sub Button1_Click()

 Print #pr, "whereis gambas"

End


Public Sub processo_Read()

 Dim s As String

 Line Input #pr, s
  
 TextArea1.Text &= s & "\n"
 
End


Intercettare il testo scritto nella console dell'IDE di gambas

L'attribuzione delle funzionalità tipiche di un terminale alla console dell'IDE di Gambas consente inoltre di poter intercettare e gestire altrove quanto viene semplicemente scritto nella console medesima. Dopo aver scritto il testo nella console, l'utente dovrà premere per ogni riga di testo il tasto "Return" od il tasto "Invio":

Private pr As Process
Private fl As File 


Public Sub Form_Open()

 pr = Exec [System.Shell] For Write

' Apriamo in lettura e sottoponiamo in osservazione lo standard Out:
 fl = Open "/dev/stdout" For Read Watch

End


Public Sub File_Read()

 Dim s As String
 
 Line Input #fl, s
  
 TextArea1.Text &= s
 
 Print "Osservato: "; s

End

Public Sub Button1_Click()
  
' Per andare "a capo" nella TextArea:
 TextArea1.Text &= Chr(10)
 
End