Assegnare a una Struttura i valori contenuti in un'area di memoria creata con la funzione Alloc()
Da Gambas-it.org - Wikipedia.
Versione del 26 mar 2023 alle 07:13 di Vuott (Discussione | contributi) (Creata pagina con "In un'area di memoria riservata, creata con la funzione ''Alloc()'' ed avente le medesime dimensioni della ''Struttura'', vengono impostati mediante i ''Definizione_ed_uso_d...")
In un'area di memoria riservata, creata con la funzione Alloc() ed avente le medesime dimensioni della Struttura, vengono impostati mediante i Memory Stream i valori da passare ad uno o più membri di quella Struttura. Successivamente si assegna tale area di memoria alla Struttura.
Mostriamo dunque un esempio:
Public Struct STRUTTURA b As Byte s As Short i As Integer End Struct Public Sub Main() Dim stru As New STRUTTURA Dim p As Pointer Dim st As Stream Dim b As Byte ' Riserviamo un'area di memoria riservata avente una dimensione pari a quella della Struttura: p = Alloc(Object.SizeOf(stru), 1) ' Otteniamo dal Puntatore uno "Stream" in scrittura: st = Memory p For Write ' Scriviamo dei valori nell'area riservata di memoria nel rispetto della disposizione dei byte all'interno dell'analoga area di memoria rappresentata dalla "Struttura", nonché della norma dell'Allineamento dei suoi membri: Write #st, &11 As Byte Write #st, 0 As Byte ' Si rispetta l'Allineamento dei membri Write #st, &2222 As Short Write #st, &4444444444 As Integer st.Close ' Assegnamo l'area riservata di memoria alla "Struttura": stru = p ' Verifichiamo i valori ora presenti nei tre membri della "Struttura": With stru Print .b, Null, Hex(.b, 2) Print .s, Null, Hex(.s, 4) Print .i, Hex(.i, 8) End With Free(p) End