Differenze tra le versioni di "Uso della Classe System"

Da Gambas-it.org - Wikipedia.
(GetExternSymbol)
Riga 157: Riga 157:
  
 
===GetExternSymbol===
 
===GetExternSymbol===
 +
Il metodo ''GetExternSymbol()'' restituisce un puntatore ad un simbolo di una libreria dinamica condivisa esterna.
  
 +
 +
La sua sintassi è:
 +
GetExternSymbol (Libreria As String, Simbolo As String) As Pointer
 +
Il nome della libreria dinamica esterna va definito senza l'estensione "''.so''" .
 +
 +
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 nome del simbolo, qualora trattasi di variabile, deve essere una variabile ''globale''.
 +
 +
 +
Mostriamo un semplice esempio, nel quale abbiamo una semplice libreria 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 = 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
 +
 +
<Font Color=gray>' ''Puntiamo alla variabile della "Struttura" presente nella libreria esterna:''</font>
 +
  p = System.GetExternSymbol("/tmp/LibreriaEsterna", "stru")
 +
 +
<Font Color=gray>' ''Passiamo alla libreria esterna il puntatore alla "Struttura" esterna ed un Intero:''</font>
 +
  Esempio(p, 9999)
 +
 +
<Font Color=gray>' ''Per leggere il valore di due membri della "Struttura" esterna, derefenziamo il puntatore alla "Struttura" medesima:''</font>
 +
  Print Int@(p)
 +
  p = p + 4
 +
  Print Short@(p)
 +
 +
'''End'''
  
 
===Log===
 
===Log===

Versione delle 04:12, 15 apr 2015

La Classe statica System dispone di Costanti, di Proprietà e di Metodi.


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

Domain

Error

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


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à.

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 sua sintasi è:

System.TimeZone As Integer


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 dinamica condivisa esterna.


La sua sintassi è:

GetExternSymbol (Libreria As String, Simbolo As String) As Pointer

Il nome della libreria dinamica esterna va definito senza l'estensione ".so" .

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 nome del simbolo, qualora trattasi di variabile, deve essere una variabile globale.


Mostriamo un semplice esempio, nel quale abbiamo una semplice libreria 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 = 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/LibreriaEsterna", "stru")

' Passiamo alla 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)
  p = p + 4
  Print Short@(p)

End

Log