Differenze tra le versioni di "Strutture e Funzioni esterne"

Da Gambas-it.org - Wikipedia.
Riga 9: Riga 9:
 
   
 
   
 
   
 
   
  '<FONT color=#006400>''Dichiariamo la Struttura:</font>
+
  '<FONT color=#006400>''Dichiariamo la Struttura modello:</font>
 
   Public Struct <FONT color=#B22222>NomeStruttura</font>
 
   Public Struct <FONT color=#B22222>NomeStruttura</font>
 
     campo1 As String
 
     campo1 As String

Versione delle 09:13, 14 mag 2012

Passare una Struttura ad una Funzione esterna

Può accadere che nell'uso di funzioni esterne si debba a loro passare delle Strutture, affinché siano rempite di valori che il programma Gambas dovrà successivamente gestire, oppure per trasmettere alle funzioni medesime dei valori presenti nei campi delle Strutture.

Supponiamo, quindi, di avere una funzione esterna (presente ovviamente in una determinata Libreria che qui come esempio fingiamo si chiami "miaLibreria) che appunto preveda come parametro una Struttura. Supponiamo altresì che il nome di tale Struttura modello sia: NomeStruttura.
Nella dichiarazione della funzione esterna con Extern dovrà essere posto il nome della Struttura modello, mentre nella funzione, quando la si utilizzerà effettivamente in una routine, andrà posto il nome della variabile particolare della Struttura, che ai fini di questo esempio chiameremo: strutturaParticolare.


'Gambas-3 class file


'Dichiariamo la Struttura modello:
 Public Struct NomeStruttura
   campo1 As String
   campo2 As Byte
   campo3 As Integer
 End Struct

 strutturaParticolare As New NomeStruttura


'Dichiariamo la Libreria che contiene la funzione esterna:
  Library "miaLibreria"


'Dichiariamo la funzione esterna che andremo ad utilizzare:
Private Extern funzione_esterna(varSt As NomeStruttura)


Public Sub Button1_Click()

'Se si devono passare alla Funzione esterna dei valori per mezzo della Struttura,
 allora nella routine i campi della Struttura dovranno essere ovviamente riempiti prima della funzione esterna.

'Utilizziamo la funzione esterna:
  funzione_esterna(strutturaParticolare)

'Se, invece, è la Funzione esterna ad avere il compito di riempire i campi della Struttura,
 allora i valori contenuti dai campi della Struttura potranno essere raccolti ovviamente solo dopo la funzione esterna.

End


Funzione esterna che ritorna una Struttura

La Funzione esterna potrà ritornare proprio una Struttura.

Esempio (usiamo per il riferimento alla Funzione esterna ed alla Struttura le denominazioni del precedente paragrafo):

 'Dichiariamo la Funzione esterna che ritornerà una "Struttura":
Private Extern funzione_esterna(varI As Integer, varB As Byte) As NomeStruttura

Public Sub Button1_Click()

 Dim vI as Integer
 Dim vB as Byte

 strutturaParticolare = funzione_esterna(vI, vB)

End