Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
A struktúrák tömbökkel, objektumokkal és eljárásokkal, valamint egymással együtt használhatók. Az interakciók ugyanazt a szintaxist használják, mint az egyes elemek.
Megjegyzés:
A struktúradeklaráció egyik szerkezeti elemét sem inicializálhatja. Csak olyan változó elemeihez rendelhet értékeket, amelyek deklarálva vannak egy struktúratípussal.
Struktúrák és tömbök
A struktúra egy tömböt tartalmazhat egy vagy több elemként. Az alábbi példa ezt szemlélteti.
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As String
Public purchaseDate As Date
End Structure
A tömb értékeit ugyanúgy érheti el egy struktúrában, mint egy objektumon lévő tulajdonságot. Az alábbi példa ezt szemlélteti.
Dim mySystem As systemInfo
ReDim mySystem.diskDrives(3)
mySystem.diskDrives(0) = "1.44 MB"
Struktúrák tömbjét is lehet deklarálni. Az alábbi példa ezt szemlélteti.
Dim allSystems(100) As systemInfo
Ugyanazokat a szabályokat követve érheti el az adatarchitektúra összetevőit. Az alábbi példa ezt szemlélteti.
ReDim allSystems(5).diskDrives(3)
allSystems(5).CPU = "386SX"
allSystems(5).diskDrives(2) = "100M SCSI"
Struktúrák és objektumok
A struktúra egy objektumot tartalmazhat egy vagy több elemként. Az alábbi példa ezt szemlélteti.
Protected Structure userInput
Public userName As String
Public inputForm As System.Windows.Forms.Form
Public userFileNumber As Integer
End Structure
Egy ilyen deklarációban egy adott objektumosztályt kell használnia, nem pedig Object.
Struktúrák és eljárások
A struktúrát eljárásargumentumként is átadhatja. Az alábbi példa ezt szemlélteti.
Public currentCPUName As String = "700MHz Pentium compatible"
Public currentMemorySize As Long = 256
Public Sub fillSystem(ByRef someSystem As systemInfo)
someSystem.cPU = currentCPUName
someSystem.memory = currentMemorySize
someSystem.purchaseDate = Now
End Sub
Az előző példa hivatkozással továbbítja a struktúrát, amely lehetővé teszi, hogy az eljárás módosítsa annak elemeit, hogy a módosítások érvénybe lépjenek a hívó kódban. Ha meg szeretne védeni egy struktúrát az ilyen módosításoktól, adja át érték szerint.
Function eljárásból egy struktúrát is visszaadhat. Az alábbi példa ezt szemlélteti.
Dim allSystems(100) As systemInfo
Function findByDate(ByVal searchDate As Date) As systemInfo
Dim i As Integer
For i = 1 To 100
If allSystems(i).purchaseDate = searchDate Then Return allSystems(i)
Next i
' Process error: system with desired purchase date not found.
End Function
Struktúrák a struktúrákon belül
A struktúrák más struktúrákat is tartalmazhatnak. Az alábbi példa ezt szemlélteti.
Public Structure driveInfo
Public type As String
Public size As Long
End Structure
Public Structure systemInfo
Public cPU As String
Public memory As Long
Public diskDrives() As driveInfo
Public purchaseDate As Date
End Structure
Dim allSystems(100) As systemInfo
ReDim allSystems(1).diskDrives(3)
allSystems(1).diskDrives(0).type = "Floppy"
Ezzel a technikával egy modulban definiált struktúrát is beágyazhat egy másik modulban definiált struktúrába.
A struktúrák tetszőleges mélységben tartalmazhatnak más struktúrákat.