Differenze tra le versioni di "Pulire il Terminale via codice"

Da Gambas-it.org - Wikipedia.
Riga 56: Riga 56:
  
 
==Uso della funzione esterna ''system()'' e del comando ''clear''==
 
==Uso della funzione esterna ''system()'' e del comando ''clear''==
Un'altra modalità prevede l'uso della funzione esterna ''system()'', contenuta nella libreria dinamica condivisa "''libc.so.6''", e del comando ''clear''.
+
Un'altra modalità prevede l'uso della funzione esterna ''system()'', contenuta nella libreria dinamica condivisa "''libc.so.6''", e del comando ''clear''.<SUP>[ [[#Note|Nota 1]] ]</sup>
  
  
Riga 76: Riga 76:
 
    
 
    
 
  '''End'''
 
  '''End'''
 +
 +
 +
 +
=Note=
 +
[1] Qualcuno sconsiglia l'uso della funzione "''system( )''" per pulire il Terminale: https://forum.ubuntu-it.org/viewtopic.php?f=33&t=481589#p3772094

Versione delle 10:46, 24 mar 2020

Per ottenere la pulizia del Terminale da quanto è stato in esso stampato, si possono adottare almeno tre modalità.


Uso della sequenza di escape \e[2J

Si può fare uso della funzione Print o della funzione Write seguita dalla sequenza di escape \e[2J .


Esempio:

Public Sub Main()
 
 Print "Testo qualsiasi"
 
 Wait 1
 
 Print "Testo qualsiasi"
 
 Wait 1
 
 Write "\e[2J"
 
 Print "Testo qualsiasi"
 
End


Uso di Shell e del comando clear

Di norma, la pulizia del Terminale avviene con il comando "clear" (ma anche con Ctrl+l da tastiera). Pertanto, se si opera con un applicativo a riga di comando, bisognerà inviare detto comando al Terminale.

Va segnalato che potrebbe essere necessario inviare preliminarmente la riga: export TERM=xterm, al fine di evitare il problema "TERM environment variable not set". Infatti, per un corretto funzionamento è necessario conoscere l'esatto tipo del terminale su cui si sta lavorando. Andrebbe quindi settata la variabile TERM con la sintassi propria del sistema su cui si lavora.


Mostriamo un esempio pratico:

Public Sub Main()  
 
 Dim i As Integer  
 
' Va verificato se l'attivazione di questa riga è necessaria:
 ' Shell "export TERM=xterm"
 
  For i = 1 To 2  
    Print "Testo qualsiasi"
    Wait 1    
  Next
  
  Wait 1  
    
' Puliamo il Terminale inviandogli il comando "clear":
  Shell "clear"  
    
  Wait 0.01  
  Print "Testo qualsiasi"  
  Wait 2  
    
End


Uso della funzione esterna system() e del comando clear

Un'altra modalità prevede l'uso della funzione esterna system(), contenuta nella libreria dinamica condivisa "libc.so.6", e del comando clear.[ Nota 1 ]


Esempio pratico:

Library "libc:6"

' int system (const char *__command)
' Execute the given line as a shell command.
Private Extern system_C(__command As String) As Integer Exec "system"


Public Sub Main()
 
 Print "Testo qualsiasi"
 
 Sleep 2
 
 system_C("clear")
 
End


Note

[1] Qualcuno sconsiglia l'uso della funzione "system( )" per pulire il Terminale: https://forum.ubuntu-it.org/viewtopic.php?f=33&t=481589#p3772094