Differenze tra le versioni di "Uso della Classe System"
Riga 6: | Riga 6: | ||
===Architecture=== | ===Architecture=== | ||
− | |||
===Backtrace=== | ===Backtrace=== | ||
Riga 12: | Riga 11: | ||
===BreackOnError=== | ===BreackOnError=== | ||
− | |||
===ByteOrder=== | ===ByteOrder=== | ||
Riga 25: | Riga 23: | ||
===Charset=== | ===Charset=== | ||
+ | |||
===Cores=== | ===Cores=== | ||
===Domain=== | ===Domain=== | ||
− | |||
===Error=== | ===Error=== | ||
Riga 34: | Riga 32: | ||
===Family=== | ===Family=== | ||
− | |||
===FirstDayOfWeek=== | ===FirstDayOfWeek=== | ||
Riga 42: | Riga 39: | ||
System.FirstDayOfWeek As Integer | System.FirstDayOfWeek As Integer | ||
Per l'Italia il primo giorno della settimana è rappresentato con il numero " 1 " (quindi: lunedì = 1, domenica = 7). | Per l'Italia il primo giorno della settimana è rappresentato con il numero " 1 " (quindi: lunedì = 1, domenica = 7). | ||
− | |||
===FullVersion=== | ===FullVersion=== | ||
Riga 49: | Riga 45: | ||
La sua sintassi è: | La sua sintassi è: | ||
Const FullVersion As String = "3.6.0" | Const FullVersion As String = "3.6.0" | ||
− | |||
===Host=== | ===Host=== | ||
Riga 57: | Riga 52: | ||
System.Host As String | System.Host As String | ||
+ | ===IgnoreOverflow=== | ||
===Language=== | ===Language=== | ||
Riga 63: | Riga 59: | ||
La sua sintassi è: | La sua sintassi è: | ||
System.Language As String | System.Language As String | ||
− | |||
Esempio: | Esempio: | ||
Riga 75: | Riga 70: | ||
'''End''' | '''End''' | ||
− | |||
===Path=== | ===Path=== | ||
Riga 82: | Riga 76: | ||
La sua sintassi è: | La sua sintassi è: | ||
System.Path As String | System.Path As String | ||
− | |||
===Profile=== | ===Profile=== | ||
− | |||
===RightToLeft=== | ===RightToLeft=== | ||
− | |||
===Shell=== | ===Shell=== | ||
Riga 95: | Riga 86: | ||
La sua sintassi è: | La sua sintassi è: | ||
Shell As String | Shell As String | ||
− | |||
− | |||
Se, per esempio, viene creata un'applicazione 'a riga di comando' contenente il seguente codice: | Se, per esempio, viene creata un'applicazione 'a riga di comando' contenente il seguente codice: | ||
'''Private''' Sub Main() | '''Private''' Sub Main() | ||
− | + | Exec [System.Shell] | |
'''End''' | '''End''' | ||
Riga 118: | Riga 107: | ||
===Trace=== | ===Trace=== | ||
− | |||
===User=== | ===User=== | ||
− | |||
===Version=== | ===Version=== | ||
Riga 128: | Riga 115: | ||
La sua sintassi è: | La sua sintassi è: | ||
Const Version As String = "3" | Const Version As String = "3" | ||
− | |||
Riga 147: | Riga 133: | ||
'''End''' | '''End''' | ||
− | |||
===Find=== | ===Find=== | ||
Riga 161: | Riga 146: | ||
'''End''' | '''End''' | ||
− | |||
===GetExternSymbol=== | ===GetExternSymbol=== |
Versione delle 01:25, 18 apr 2023
La Classe statica System dispone di Costanti, di Proprietà e di Metodi.
Indice
Costanti e Proprietà
La Classe System offre informazioni generali circa l'ambiente del sistema operativo.
Architecture
Backtrace
BreackOnError
ByteOrder
La proprietà .ByteOrder ritorna un valore intero che rappresenta l'ordine dei byte del sistema.
Tale ordine può essere:
- gb.LittleEndian = 0 (LittleEndian);
- gb.BigEndian = 1 (BigEndian).
La sua sintassi è:
System.ByteOrder As Integer
Charset
Cores
Domain
Error
Restituisce il codice di errore Unix dell'ultimo errore generato da una chiamata di sistema, che corrisponde al Puntatore dereferenziato della funzione "__errno_location()".
Family
FirstDayOfWeek
La proprietà .FirstDayOfWeek ritorna la rappresentazione numerica del primo giorno della settimana, sulla base della corrente lingua e localizzazione.
La sua sintassi è:
System.FirstDayOfWeek As Integer
Per l'Italia il primo giorno della settimana è rappresentato con il numero " 1 " (quindi: lunedì = 1, domenica = 7).
FullVersion
La costante .FullVersion ritorna una stringa che rappresenta la versione attuale completa dell'interpete di Gambas.
La sua sintassi è:
Const FullVersion As String = "3.6.0"
Host
La proprietà .Host ritorna una stringa che rappresenta l'host name del sistema operativo.
La sua sintassi è:
System.Host As String
IgnoreOverflow
Language
La proprietà .Language ritorna o imposta una stringa che rappresenta la corrente lingua del sistema.
La sua sintassi è:
System.Language As String
Esempio:
Public Sub Main() ' Verifica la lingua impostata corrente del sistema: Print System.Language ' Imposta una nuova la lingua del sistema: System.Language = "fr_Fr" End
Path
La proprietà .Path ritorna una stringa che rappresenta il percorso ove è installato Gambas.
La sua sintassi è:
System.Path As String
Profile
RightToLeft
Shell
La proprietà .Shell ritorna o imposta la "shell" che viene, o sarà, utilizzata quando si invierà il comando Shell. Se non viene impostato, viene usato come predefinita la Shell con percorso "/bin/sh".
La sua sintassi è:
Shell As String
Se, per esempio, viene creata un'applicazione 'a riga di comando' contenente il seguente codice:
Private Sub Main() Exec [System.Shell] End
e viene lanciata in un Terminale, sarà disponibile all'interno di quel medesimo Terminale una Shell con tutte le sue funzionalità.
Come detto all'inizio, si potrà anche scegliere la "shell" da utilizzare assegnandola alla Proprietà ".Shell". <>BR>Esempio:
System.Shell = System.Find("bash")
Si segnala anche la lettura della pagina "Rendere la console dell'IDE funzionale come un Terminale" di questa WIKI.
TimeZone
La proprietà .TimeZone ritorna un Intero che rappresenta il numero dei secondi da aggiungere al fuso orario locale per ottenere il fuso orario UTC.
La logica è invertita con il modo in cui il fuso orario viene solitamente stampato: se UTC+2, "Sytem.Timezone" restituirà -7200.
La sua sintassi è:
System.TimeZone As Integer
Trace
User
Version
La costante .Version ritorna una stringa che rappresenta la versione attuale dell'interprete di Gambas.
La sua sintassi è:
Const Version As String = "3"
Metodi
I Metodi della Classe System sono i seguenti:
Exist
Il metodo .Exist() ritorna il valore Vero, se esiste all'interno della variabile d'ambiente PATH del sistema il programma specificato nel suo parametro.
La sua sintassi è:
System.Exist(programma As String) As Boolean
Esempio:
Public Sub Main() Print System.Exist("gedit") End
Find
Il metodo ".Find()" cerca all'interno della variabile d'ambiente PATH del sistema il programma specificato nel suo parametro e, se trovato, ne ritorna il percorso completo.
La sua sintassi è:
System.Find(programma As String) As String
Esempio:
Public Sub Main() Print System.Find("gedit") End
GetExternSymbol
Il Metodo ".GetExternSymbol()" restituisce un Puntatore ad un simbolo di una libreria condivisa esterna. [nota 1]
La sua sintassi è:
GetExternSymbol (Libreria As String, Simbolo As String) As Pointer
Il nome della libreria esterna va definito senza l'estensione ".so" e senza la eventuale parte finale numerica relativa alla sua versione.
Se la libreria è posta in una directory diversa da quella standard /usr/lib, nel primo argomento va specificato l'intero percorso della libreria dinamica esterna.
Il simbolo, qualora trattasi di variabile, globale. Può anche essere un simbolo Costante dichiarato in un file d'intestazione di altra libreria esterna, purché tale file d'intestazione sia richiamato con la direttiva "#include" nel file header della libreria che stiamo usando.
Esempi pratici
Di seguito alcuni esempi pratici sull'uso del Metodo ".GetExternSymbol()". [nota 2]
1° esempio
Mostriamo un semplice esempio, nel quale abbiamo una semplice libreria condivisa esterna, che chiameremo "LibreriaEsempio.c", il cui codice C è il seguente:
struct STRUTTURA { int i; short s; char c; long l; } stru; void Esempio(struct STRUTTURA * p, int v) { p->i = v; p->s = (short) v - 9000; }
Il codice sorgente di detta libreria condivisa sarà posto nella cartella Dati del nostro progetto.
Il codice principale di Gambas sarà:
Private Extern Esempio(po As Pointer, valore As Integer) As Pointer In "/tmp/LibreriaEsempio" Public Sub Main() Dim p As Pointer Shell "gcc -o /tmp/LibreriaEsempio.so " &/ Application.Path &/ "LibreriaEsempio.c -shared" Wait ' Puntiamo alla variabile della "Struttura" presente nella libreria esterna: p = System.GetExternSymbol("/tmp/LibreriaEsempio", "stru") ' Passiamo alla funzione della libreria esterna il puntatore alla "Struttura" esterna ed un Intero: Esempio(p, 9999) ' Per leggere il valore di due membri della "Struttura" esterna, derefenziamo il puntatore alla "Struttura" medesima: Print Int@(p) Print Short@(p + 4) End
2° esempio
Nell'esempio, che segue, è prevista una libreria condivisa esterna contenente semplicemente la dichiarazione di una Struttura. Nel codice Gambas si provvederà ad ottenere un Puntatore alla variabile della Struttura esterna, presente nella libreria condivisa esterna, nel quale successivamente si scriveranno i dati in un uno o più membri della Struttura medesima.
Il codice C della libreria dinamica esterna, che chiameremo "LibreriaEsempio.c", è dunque il seguente:
struct STRUTTURA { int i; short s; char c; long l; } stru;
Il codice sorgente di detta libreria condivisa sarà posto nella cartella Dati del nostro progetto.
Il codice principale di Gambas sarà:
Public Sub Main() Dim p As Pointer Dim st As Stream Shell "gcc -o /tmp/LibreriaEsempio.so " &/ Application.Path &/ "LibreriaEsempio.c -shared" Wait ' Puntiamo alla variabile della "Struttura" presente nella libreria esterna: p = System.GetExternSymbol("/tmp/LibreriaEsempio", "stru") ' Dal "Puntatore" alla "Struttura" estrna creiamo una variabile di tipo "Stream", per poter scrivere nell'area di memoria del "Puntatore" medesimo: st = Memory p For Write Write #st, 9999 As Integer Write #st, 888 As Short st.Close ' Per leggere il valore di due membri della "Struttura" esterna, derefenziamo il Puntatore alla "Struttura" medesima: Print Int@(p) Print Short@(p + 4) End
3° esempio
In questo esempio si assegnerà un valore a due membri della Struttura esterna utilizzando per ciascuna assegnazione anche una specifica funzione nella libreria condivisa esterna.
Il codice C della libreria condivisa esterna, che chiameremo "LibreriaEsempio.c", è dunque il seguente:
struct STRUTTURA { int i; short s; char c; long l; } stru; void Scrive_Stru(struct STRUTTURA *p, int v) { p->i = v; } void Scrive_StruSho(struct STRUTTURA *p, short v) { p->s = v; }
Il codice sorgente di detta libreria condivisa sarà posto nella cartella Dati del nostro progetto.
Il codice principale di Gambas sarà:
Library "/tmp/LibreriaEsempio" Private Extern Scrive_StruInt(po As Pointer, valore As Integer) Private Extern Scrive_StruSho(po As Pointer, valore As Short) Public Sub Main() Dim p As Pointer Shell "gcc -o /tmp/LibreriaEsempio.so " &/ Application.Path &/ "LibreriaEsempio.c -shared" Wait p = System.GetExternSymbol("/tmp/LibreriaEsempio", "stru") Scrive_StruInt(p, 9999) Scrive_StruSho(p, 777) Print Int@(p) Print Short@(p + 4) End
GetFormat
Log
Note
[1] Vedere anche la seguente pagina: Ottenere l'indirizzo e il valore di una Costante e di una variabile globale situate in una libreria condivisa
[2] Per un ulteriore esempio vedere la seguente pagina: Ottenere la descrizione del tipo di errore dai file header "errno-base.h" e "errno.h"