Differenze tra le versioni di "Strutture: dichiarazione ed uso"
(→Array di Strutture) |
|||
Riga 174: | Riga 174: | ||
E' infine possibile realizzare array di Strutture. | E' infine possibile realizzare array di Strutture. | ||
− | Esempio: | + | Esempio <Font Color= #FF0000>'''1'''</font>: |
Public Struct <Font Color= #B22222>strutturaModello</font> | Public Struct <Font Color= #B22222>strutturaModello</font> | ||
Riga 183: | Riga 183: | ||
<Font Color= #006400>' ''Dichiariamo la variabile della Struttura come array.'' | <Font Color= #006400>' ''Dichiariamo la variabile della Struttura come array.'' | ||
' ''Sarà necessario inserire dopo "As" la parola "'''Struct'''":''</font> | ' ''Sarà necessario inserire dopo "As" la parola "'''Struct'''":''</font> | ||
− | Private <Font Color= #0000FF>prima[10]</font> As '''Struct''' <Font Color= #B22222> | + | Private <Font Color= #0000FF>prima[10]</font> As '''Struct''' <Font Color= #B22222>StrutturaModello</font> |
Riga 196: | Riga 196: | ||
.prI = 1000 + a | .prI = 1000 + a | ||
End With | End With | ||
+ | Next | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | |||
+ | <Font Color= #006400>' ''Andiamo a mostrare i risultati in console:''</font> | ||
+ | '''Public''' Sub Button1_Click() | ||
+ | |||
+ | Dim a As Byte | ||
+ | |||
+ | For a = 0 To 9 | ||
+ | With <Font Color= #0000FF>prima[a]</font> | ||
+ | Print .prB | ||
+ | Print .prI | ||
+ | End With | ||
+ | Next | ||
+ | |||
+ | '''End''' | ||
+ | |||
+ | Esempio <Font Color= #FF0000>'''2'''</font>: | ||
+ | |||
+ | Public Struct <Font Color= #B22222>strutturaModello</font> | ||
+ | prB As Byte | ||
+ | prI As Integer | ||
+ | End Struct | ||
+ | |||
+ | <Font Color= #006400>' ''Dichiariamo la variabile della Struttura come array indefinito.'' | ||
+ | ' ''In questo caso sarà necessario inserire dopo "As" la parola "'''New'''":''</font> | ||
+ | Private <Font Color= #0000FF>prima</font> As New <Font Color= #B22222>StrutturaModello[]</font> | ||
+ | |||
+ | <Font Color= #006400>' ''Dichiariamo un'altra variabile simile alla Struttura modello:''</font> | ||
+ | Private <Font Color= #1E90FF>seconda</font> As New <Font Color= #B22222>StrutturaModello</font> | ||
+ | |||
+ | |||
+ | '''Public''' Sub Form_Open() | ||
+ | |||
+ | Dim a As Byte | ||
+ | |||
+ | <Font Color= #0000FF>prima</font> = New <Font Color= #B22222>Struct StrutturaModello[]</font> | ||
+ | |||
+ | <Font Color= #006400>' ''Assegnamo i valori agli elementi della Struttura-Array:''</font> | ||
+ | For a = 0 To 9 | ||
+ | |||
+ | <Font Color= #1E90FF>seconda</font> = New <Font Color= #B22222>Struct StrutturaModello[]</font> | ||
+ | With <Font Color= #1E90FF>seconda</font> | ||
+ | .prB = a | ||
+ | .prI = 1000 + a | ||
+ | End With | ||
+ | |||
+ | <Font Color= #0000FF>prima</font>.Add(<Font Color= #1E90FF>seconda</font>) | ||
+ | |||
+ | Next | ||
'''End''' | '''End''' |
Versione delle 15:47, 15 mag 2012
La Struttura similmente all'Array aggrega due o più elementi. Però, mentre l'Array aggrega elementi del medesimo tipo (per esempio tutti valori di tipo Integer, o di tipo Byte, etc), la Struttura aggrega solitamente (ma non necessariamente) elementi di tipo diverso.
Dichiariamo una Struttura con dei campi, che dovranno essere riempiti con dei valori. Tale Struttura avrà un proprio nome e farà da modello alle particolari variabili strutture che saranno effettivamente utilizzate per contenere valori.
PUBLIC Struct NomeStruttura ' definisco i campi della Struttura "modello" ' Questa Struttura si riserverà, occupandola, 9 byte di memoria in tutto: valore1 As Integer ' dal byte n° 0 al n° 3 valore2 As Integer ' dal byte n° 4 al n° 7 valore3 as Byte ' il byte n° 8 END Struct ' creo una struttura "reale" composta a perfetta immagine di quella modello: Private nuovaStruttura As New NomeStruttura ' E' possibile anche usare la parola "Struct" invece di New: Private nuovaStruttura As Struct NomeStruttura Public Sub Form_Open() Dim variabValor as Byte variabValor = Inputbox("Immetto un valore per \"riempire\" il campo \"variabile\" di \"nuovaStruttura\": valore3 .") ' attribuisco un valore a ciascun campo variabile della struttura ' (qui i valori sono due "costanti" ed uno "variabile" che immetto io con InputBox): nuovaStruttura.valore1 = 3 nuovaStruttura.valore2 = 6 nuovaStruttura.valore3 = variabValor End Public Sub Button1_Click() ' quindi opero con i valori contenuti da "nuovaStruttura", ' per esempio li faccio mostrare in console: With nuovaStruttura Print .valore1 Print .valore2 Print .valore3 End With End
Strutture contenenti Array e Matrici
Le Strutture possono essere costituite da campi di variabili Array e Matrici.
Esempio:
PUBLIC Struct StrutturaModello arB[10] As Byte ' array monodimensionale definito arI As Integer[] ' array monodimensionale non definito mt$[10, 4] As String ' matrice End Struct Private strutturaVariabile As New StrutturaModello PUBLIC Sub Form_Open() Dim a, m As Byte strutturaVariabile.arI = New Integer[] For a = 0 To 9 With strutturaVariabile .arB[a] = a .arI.Add(a + a) For m = 0 To 3 .mt$[a, m] = Chr(strutturaVariabile.arI[a] + 70) Next End With Next End PUBLIC Sub Button1_Click() Dim a, m As Byte For a = 0 To 9 With strutturaVariabile Print .arB[a] Print .arI[a] For m = 0 To 3 Print .mt$[a, m] Next End With Next End
Strutture che contengono altre Strutture
Le Strutture possono contenere, come proprio elemento, altre Strutture. Da tenere presente che è necessario dichiarare e definire la Struttura, che sarà contenuta nella Struttura principale, prima della dichiarazione della Struttura principale contenente.
Esempio:
' va dichiarata e definita innanzitutto la Struttura ' che sarà contenuta nella Struttura principale: Public Struct strutturaInterna sb As Byte sI As Integer s$ As String End Struct Private internaStru As New strutturaInterna ' ...quindi la Struttura principale: PUBLIC Struct StrutturaPrincipale prB As Byte prI As Integer internaStru As Struct strutturaInterna End Struct Private struttVariab As New StrutturaPrincipale Public Sub Form_Open() Dim a As Byte a = 1 ' Assegnamo i valori alle variabili contenute nei campi della Struttura principale: With struttVariab .prB = 10 .prI = 1000 .internaStru.sb = a .internaStru.sI = struttVariab.prI + a .internaStru.s$ = "prova " & Str(a) End With End ' Andiamo a mostrare i risultati in console: Public Sub Button1_Click() Dim a As Byte a = 1 With struttVariab Print .prB Print .prI Print .internaStru.sb Print .internaStru.sI Print .internaStru.s$ End With End
Il risultato in console sarà:
10
1000
1
1001
prova 1
Array di Strutture
E' infine possibile realizzare array di Strutture.
Esempio 1:
Public Struct strutturaModello prB As Byte prI As Integer End Struct ' Dichiariamo la variabile della Struttura come array. ' Sarà necessario inserire dopo "As" la parola "Struct": Private prima[10] As Struct StrutturaModello Public Sub Form_Open() Dim a As Byte ' Assegnamo i valori agli elementi della Struttura-Array: For a = 0 To 9 With prima[a] .prB = a .prI = 1000 + a End With Next End ' Andiamo a mostrare i risultati in console: Public Sub Button1_Click() Dim a As Byte For a = 0 To 9 With prima[a] Print .prB Print .prI End With Next End
Esempio 2:
Public Struct strutturaModello prB As Byte prI As Integer End Struct ' Dichiariamo la variabile della Struttura come array indefinito. ' In questo caso sarà necessario inserire dopo "As" la parola "New": Private prima As New StrutturaModello[] ' Dichiariamo un'altra variabile simile alla Struttura modello: Private seconda As New StrutturaModello Public Sub Form_Open() Dim a As Byte prima = New Struct StrutturaModello[] ' Assegnamo i valori agli elementi della Struttura-Array: For a = 0 To 9 seconda = New Struct StrutturaModello[] With seconda .prB = a .prI = 1000 + a End With prima.Add(seconda) Next End ' Andiamo a mostrare i risultati in console: Public Sub Button1_Click() Dim a As Byte For a = 0 To 9 With prima[a] Print .prB Print .prI End With Next End