Conoscere la riga e la colonna nelle quali è posizionato il cursore in un Terminale

Da Gambas-it.org - Wikipedia.

Per conoscere il numero di riga ed il numero di colonna, nei quali è posizionato il cursore all'interno di un Terminale, bisognerà inviare al Terminale medesimo la riga di comando \e[6n .


Di seguito mostriamo un esempio "a riga di comando", da lanciare direttamente in un Terminale, con il quale il cursore verrà spostato di 80 caratteri a sinistra lungo una stringa. Al termine verrà indicata la posizione del cursore medesimo. Il risultato dell'esempio, seppur efficace, è ancora un po' grezzo.
La finestra del Terminale andrà aperta a schermo intero.

Public Sub Main()  
 
 Dim s As String  
 Dim fl As File
 Dim j As Byte
 
 
' La stringa, sulla quale sposteremo il cursore, è questa: 
  s = "aaaaaaaaaabbbbbbbbbbccccccccccddddddddddeeeeeeeeeeffffffffffgggggggggghhhhhhhhhh" &
      "iiiiiiiiiillllllllll"  
 
  fl = Open "/dev/stdout" For Read Write  
    
  Write #fl, s    
  Wait 0.1  
  For j = 1 To 80   ' Ci spostiamo di 80 caratteri a sinistra lungo la stringa visibile sul Terminale
    Write #fl, "\x08"    
    Wait 0.3  
  Next    
 
  Wait 2  
 
' Inviamo al Terminale il comando necessario per conoscere la posizione del cursore. 
' Nel risultato mostrato il primo valore numerico è la riga, il secondo è la colonna,
' nelle quali è posizionato il cursore al termine dello spostamento lungo la stringa.
' La scritta per maggiore evidenza sarà in grassetto e colorata di giallo:
  Write #fl, "\e[1;33m\e[6n"  
 
  Print #fl, "\n\nRiga ; Colonna"  
 
' Esegue il ciclo sino a quando non premeremo il tasto 'Invio':
  Do  
    Read #fl, s, -256  
  Loop Until s <> Null  
 
    
' Va in chiusura:
  Write #fl, "\e[0m"
  Shell "clear"
  fl.Close
 
End