Differenze tra le versioni di "Conoscere la riga e la colonna nelle quali è posizionato il cursore in un Terminale"
Da Gambas-it.org - Wikipedia.
(Una versione intermedia di uno stesso utente non è mostrata) | |||
Riga 1: | Riga 1: | ||
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'' . | 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. La visualizzazione del risultato, seppur efficace, è ancora un po' grezzo. | |
− | Di seguito mostriamo un esempio | ||
<BR>La finestra del Terminale andrà aperta a schermo intero. | <BR>La finestra del Terminale andrà aperta a schermo intero. | ||
− | + | Public Sub Main() | |
− | |||
− | |||
− | |||
− | |||
+ | Dim s As String | ||
+ | Dim fl As File | ||
+ | Dim j As Byte | ||
<FONT color=gray>' ''La stringa, sulla quale sposteremo il cursore, è questa:''</font> | <FONT color=gray>' ''La stringa, sulla quale sposteremo il cursore, è questa:''</font> | ||
Riga 18: | Riga 16: | ||
Write #fl, s | Write #fl, s | ||
− | + | ||
For j = 1 To 80 <FONT color=gray>' ''Ci spostiamo di 80 caratteri a sinistra lungo la stringa visibile sul Terminale''</font> | For j = 1 To 80 <FONT color=gray>' ''Ci spostiamo di 80 caratteri a sinistra lungo la stringa visibile sul Terminale''</font> | ||
Write #fl, "\x08" | Write #fl, "\x08" | ||
Riga 27: | Riga 25: | ||
<FONT color=gray>' ''Inviamo al Terminale il comando necessario per conoscere la posizione del cursore.'' | <FONT color=gray>' ''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, | + | ' ''Nel risultato mostrato il primo valore numerico è la riga, il secondo (a cominciare da indice 0) è 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:''</font> | ' ''La scritta per maggiore evidenza sarà in grassetto e colorata di giallo:''</font> | ||
Write #fl, "\e[1;33m\e[6n" | Write #fl, "\e[1;33m\e[6n" | ||
Riga 38: | Riga 35: | ||
Read #fl, s, -256 | Read #fl, s, -256 | ||
Loop Until s <> Null | Loop Until s <> Null | ||
− | + | ||
− | |||
<FONT color=gray>' ''Va in chiusura:''</font> | <FONT color=gray>' ''Va in chiusura:''</font> | ||
Write #fl, "\e[0m" | Write #fl, "\e[0m" | ||
Riga 45: | Riga 41: | ||
fl.Close | fl.Close | ||
− | + | End |
Versione attuale delle 13:29, 1 lug 2024
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. La visualizzazione del risultato, 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 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 (a cominciare da indice 0) è 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