Struktury a ostatní programovací elementy (Visual Basic)

Struktury můžete používat ve spojení s poli, objekty a postupy, stejně jako s ostatními. Interakce používají stejnou syntaxi jako tyto prvky jednotlivě.

Poznámka:

V deklaraci struktury nelze inicializovat žádné prvky struktury. Hodnoty lze přiřadit pouze prvkům proměnné, která byla deklarována jako typ struktury.

Struktury a pole

Struktura může obsahovat pole jako jeden nebo více jeho prvků. Toto dokládá následující příklad.

Public Structure systemInfo  
    Public cPU As String  
    Public memory As Long  
    Public diskDrives() As String  
    Public purchaseDate As Date  
End Structure

K hodnotám pole v rámci struktury přistupujete stejným způsobem jako k vlastnosti objektu. Toto dokládá následující příklad.

Dim mySystem As systemInfo  
ReDim mySystem.diskDrives(3)  
mySystem.diskDrives(0) = "1.44 MB"  

Můžete také deklarovat pole struktur. Toto dokládá následující příklad.

Dim allSystems(100) As systemInfo  

Pro přístup ke komponentám této datové architektury se řídíte stejnými pravidly. Toto dokládá následující příklad.

ReDim allSystems(5).diskDrives(3)  
allSystems(5).CPU = "386SX"  
allSystems(5).diskDrives(2) = "100M SCSI"  

Struktury a objekty

Struktura může obsahovat objekt jako jeden nebo více jeho prvků. Toto dokládá následující příklad.

Protected Structure userInput  
    Public userName As String  
    Public inputForm As System.Windows.Forms.Form  
    Public userFileNumber As Integer  
End Structure  

V takové deklaraci byste měli použít konkrétní třídu objektu, nikoli Object.

Struktury a procedury

Strukturu můžete předat jako argument procedury. Toto dokládá následující příklad.

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  

Předchozí příklad předá strukturu odkazem, což umožňuje postupu upravit jeho prvky tak, aby se změny projevily ve volajícím kódu. Pokud chcete chránit strukturu před takovou úpravou, předejte ji hodnotou.

Strukturu můžete vrátit také z Function procedury. Toto dokládá následující příklad.

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  

Struktury v rámci struktur

Struktury mohou obsahovat jiné struktury. Toto dokládá následující příklad.

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"  

Tuto techniku můžete použít také k zapouzdření struktury definované v jednom modulu v rámci struktury definované v jiném modulu.

Struktury mohou obsahovat jiné struktury na libovolnou hloubku.

Viz také