Dynamische Objekte in Strukturen
Verfasst: 12.03.2014 18:32
unter »Struktur« lese ich:
»Dynamische Objekte wie Arrays, Listen und Maps werden innerhalb von Strukturen unterstützt und werden automatisch initialisiert, wenn das Objekt mit Hilfe der Struktur erstellt wird. Um solche Felder zu deklarieren, verwenden Sie die folgende Schlüsselwörter: Array, List und Map.«
Bei den »Compiler Funktionen«, unter »InitializeStructure« steht jedoch:
»InitializeStructure initialisiert den angegebenen strukturierten Speicherbereich. Es initialisiert die Struktur-Objekte ("members") vom Typ Array, Liste oder Map, andere Objekte sind nicht betroffen (.s, .l, .i etc.).«
Werden Arrays initialisiert, das heißt ein Speicherbereich allocated, wenn ich ein Objekt mit test.struc erstelle?
zeigt, das das Array nicht initialisiert wird. Ist das _immer_ so? ist der Text in der Hilfe unter »Struktur« veraltet?
mfg
_sivizius
»Dynamische Objekte wie Arrays, Listen und Maps werden innerhalb von Strukturen unterstützt und werden automatisch initialisiert, wenn das Objekt mit Hilfe der Struktur erstellt wird. Um solche Felder zu deklarieren, verwenden Sie die folgende Schlüsselwörter: Array, List und Map.«
Code: Alles auswählen
Structure Person
Name$
Age.l
List Friends$()
EndStructure
John.Person
John\Name$ = "John"
John\Age = 23
; Jetzt fügen wir einige Freunde zu John hinzu
;
AddElement(John\Friends$())
John\Friends$() = "Jim"
»InitializeStructure initialisiert den angegebenen strukturierten Speicherbereich. Es initialisiert die Struktur-Objekte ("members") vom Typ Array, Liste oder Map, andere Objekte sind nicht betroffen (.s, .l, .i etc.).«
Code: Alles auswählen
Structure People
Name$
Age.l
List Friends.s()
EndStructure
*Student.People = AllocateMemory(SizeOf(People))
InitializeStructure(*Student, People)
; Jetzt ist die Liste fertig zur Benutzung
;
AddElement(*Student\Friends())
*Student\Friends() = "John"
Code: Alles auswählen
Structure test
Array self.i(123)
EndStructure
Debug SizeOf(test)
*myself.test = AllocateMemory(SizeOf(test))
Debug *myself
Debug PeekI(*myself)
InitializeStructure(*myself, test)
Debug PeekI(*myself)
mfg
_sivizius