Differenze tra le versioni di "Ottenere il puntatore di una variabile di tipo Struttura"
Riga 82: | Riga 82: | ||
In questo caso è preferibile optare per la dichiarazione della variabile di tipo ''Struttura'' con la parola ''New'': | In questo caso è preferibile optare per la dichiarazione della variabile di tipo ''Struttura'' con la parola ''New'': | ||
Dim variabile_struttura As <FONT color=B22222>New</font> STRUTTURA | Dim variabile_struttura As <FONT color=B22222>New</font> STRUTTURA | ||
+ | Da sottolineare che i dati sono presenti all'interno dell'area di memoria della ''Struttura'' a cominciare dal 25° byte (indice 24). | ||
Per vedere un esempio del suo uso si rinvia a [[Leggere_e_scrivere_in_una_Struttura_con_i_Memory_Stream|questa pagina della WIKI]]. | Per vedere un esempio del suo uso si rinvia a [[Leggere_e_scrivere_in_una_Struttura_con_i_Memory_Stream|questa pagina della WIKI]]. |
Versione delle 17:22, 1 ott 2014
E' possibile ottenere il Puntatore di una variabile di tipo Struttura (ossia una variabile di tipo Puntatore che punta all'indirizzo di memoria di una variabile di tipo Struttura) mediante almeno due modalità:
- con la funzione VarPtr( );
- con il metodo Object.Address().
Ottenere il puntatore di una variabile di tipo Struttura mediante la funzione VarPtr( )
La funzione VarPtr( ) ritorna un Puntatore che punta alla variabile contenuta in memoria; pertanto si utilizzerà con la variabile di tipo Struttura con la seguente sintassi:
VarPtr(Variabile_Struttura) As Pointer
V'è da sottolineare che la variabile di tipo Struttura andrà assolutamente dichiarata all'esterno delle routine, come globale, e preceduta dalla parola chiave Struct:
Private variabile_struttura As Struct STRUTTURA
Esempio:
Public Struct abcde a As Byte b As Short c As Integer d As Long e As String End Struct Private vrSt As Struct Abcde Public Sub Main() Dim p1, p2 As Pointer Dim b As Byte Dim sr As Short Dim i As Integer Dim l As Long Dim t As Stream With vrSt .a = 9 .b = 999 .c = 999999 .d = 999999999 .e = "testo" End With ' Creiamo il "Puntatore" alla variabile di tipo "Struttura": p1 = VarPtr(vrSt) ' ' ' ' ' ' ' Ora ri-otteniamo i valori presenti nella "Struttura" ' dereferenziando con i "Memory-Stream" il "Puntatore" prima creato: t = Memory p1 For Read Read #t, b Print b Seek #t, 2 Read #t, sr Print sr Seek #t, 4 Read #t, i Print i Seek #t, 8 Read #t, l Print l Seek #t, 16 Read #t, p2 Print String@(p2) t.Close End
Ottenere il puntatore di una variabile di tipo Struttura mediante il metodo Object.Address()
In particolare tale metodo ritorna l'indirizo di memoria dell'oggetto posto come parametro del metodo stesso, e si utilizzerà con la variabile di tipo Struttura con la seguente sintassi:
Object.Address(Variabile_Struttura) As Pointer
In questo caso è preferibile optare per la dichiarazione della variabile di tipo Struttura con la parola New:
Dim variabile_struttura As New STRUTTURA
Da sottolineare che i dati sono presenti all'interno dell'area di memoria della Struttura a cominciare dal 25° byte (indice 24).
Per vedere un esempio del suo uso si rinvia a questa pagina della WIKI.