Conoscere il numero di linee e di colonne costituenti la corrente dimensione di un terminale o console

Da Gambas-it.org - Wikipedia.
Versione del 15 ott 2024 alle 12:22 di Vuott (Discussione | contributi)

(diff) ← Versione meno recente | Versione attuale (diff) | Versione più recente → (diff)

Per conoscere il numero di linee e di colonne costituenti la corrente dimensione di un terminale o della console dell'IDE di Gambas, potremo utilizzare alcune modalità.

Usando le Proprietà ".Width" e ".Height" della risorsa "File.Out.Term" di Gambas

Per conoscere il numero massimo di colonne, di cui è formata una riga completa della Console o del Terminale; e pertanto quanti caratteri una riga della Console o del Terminale è in grado di contenere, senza che il testo, ivi stampato, continui automaticamente alla riga successiva in basso, si userà:

File.Out.Term.Width As Integer

Per conoscere, invece, il numero massimo di righe di una Console o Terminale, si userà:

File.Out.Term.Height As Integer


Usando la funzione "ioctl()" della libreria C

Modificando la dimensione del terminale o della console, i valori restituiti attinenti alle colonne e alle righe cambieranno.

Library "libc:6"

Public Struct winsize
  ws_row As Short
  ws_col As Short
  ws_xpixel As Short
  ws_ypixel As Short
End Struct

Private Const STDOUT_FILENO As Integer = 1
Private Const TIOCGWINSZ As Integer = &5413

' int ioctl (int __fd, unsigned long int __request, ...)
' Perform the I/O control operation specified by REQUEST on FD.
Private Extern ioctl(__fd As Integer, __request As Long, w As Winsize) As Integer 


Public Sub Main()

 Dim ws As New Winsize

 ioctl(STDOUT_FILENO, TIOCGWINSZ, ws)

 Print "Linee:   "; ws.ws_row
 Print "Colonne: "; ws.ws_col

End