Strukturen


Syntax
Structure <Name> [Extends <Name>]
  ...
EndStructure 
Beschreibung
Structure ist nützlich, um Benutzertypen zu definieren und um Zugriff auf einige Speicherbereiche des OS zu erhalten. Strukturen können für das schnellere und einfachere Verwalten von großen Datenbeständen benutzt werden. Sie sind sehr nützlich, da Sie in einem Objekt alle zusammengehörenden Informationen gruppieren zu können. Auf die Struktur-Felder wird mit der \ Option zugegriffen. Strukturen können auch verschachtelt werden. Statische Arrays werden innerhalb von Strukturen unterstützt.

Der optionale Extends Parameter ermöglicht eine Struktur mit neuen Feldern (aus einer bereits definierten Struktur) zu erweitern. Alle in der erweiterten (nach Extends angegebenen) Struktur gefundenen Felder werden in der neu definierten Struktur verfügbar sein und werden vor den neuen Feldern platziert. Dies ist nützlich, um einfache Vererbung von Strukturen durchzuführen.

SizeOf kann bei Strukturen benutzt werden, um die Größe der Struktur zu ermitteln. OffsetOf kann verwendet werden, um den Index des angegebenen Felds zu ermitteln.

Bitte beachten Sie, dass sich in Strukturen ein statisches Array[] nicht so verhält wie das normale BASIC Array (definiert mittels Dim), um konform zum C/C++ Strukturen Format zu bleiben (was direkte API Strukturen Portierung ermöglicht). Dies bedeutet, dass a[2] ein Array von 0 bis 1 definiert, wogegen Dim a(2) ein Array von 0 bis 2 anlegt.

Beispiel:

  Structure Person
    Name.s
    ForName.s 
    Age.w 
  EndStructure
  
  Dim MyFriends.Person(100)
  
  ; Hier wird die Position '0' des Arrays MyFriend()
  ; eine Person und deren Informationen enthalten.
  
  MyFriends(0)\Name = "Andersson"
  MyFriends(0)\Forname = "Richard" 
  MyFriends(0)\Age = 32

Beispiel: Eine komplexere Struktur (verschachtelt und statisches Array)

  Structure Window
    *NextWindow.Window  ; verweist auf ein anderes Window Objekt
    x.w 
    y.w
    Name.s[10]  ; 10 Namen verfügbar (von 0 bis 9)
  EndStructure

Beispiel: Erweiterte ("extended") Struktur

  Structure MyPoint
    x.l 
    y.l
  EndStructure

  Structure MyColoredPoint Extends MyPoint
    color.l 
  EndStructure

  ColoredPoint.MyColoredPoint\x = 10
  ColoredPoint.MyColoredPoint\y = 20
  ColoredPoint.MyColoredPoint\color = RGB(255, 0, 0)

Syntax
StructureUnion
  Field1.Type
  Field2.Type
  ...
EndStructureUnion
Beschreibung
StructureUnion sind nur nützlich für fortgeschrittene Programmierer, welche etwas Speicher sparen wollen, indem sie einige Felder innerhalb derselben Struktur teilen. Sie funktionieren wie das 'Union' Schlüsselwort in C/C++.

Beispiel:

  Structure Type
    Name$
    StructureUnion
      Long.l      ; Jedes Feld (Long, Float und String) befinden sich
      Float.f     ; an derselben Stelle im Speicher.
      String.s    ;
    EndStructureUnion
  EndStructure