Seite 1 von 1
ReDim mit Struktur-Arrays
Verfasst: 31.07.2010 15:44
von Mok
Hallo.
Kann man mit Arrays in Strukturen ReDim machen? (Wenn ja: wie? Wenn nein: wie würde ein workaround aussehen?)
Andere Sachen, wie ArraySize() oder CopyArray() wären ja nicht so schwer, aber bei ReDim muss ich echt passen.
Re: ReDim mit Struktur-Arrays
Verfasst: 31.07.2010 15:57
von STARGÅTE
klar geht das, da ja das Array nicht in der Strukture drin ist sonden außerhalb:
Code: Alles auswählen
Structure Test
Long.l
String.s
Array Feld.i(100)
EndStructure
Debug SizeOf(Test)
Variable.Test
Debug SizeOf(Variable)
Debug ArraySize(Variable\Feld())
ReDim Variable\Feld(10000)
Debug SizeOf(Variable)
Debug ArraySize(Variable\Feld())
Re: ReDim mit Struktur-Arrays
Verfasst: 01.08.2010 12:16
von Mok
Ach ja, PB-Arrays funzen ja auch in Strukturen. Ich bin bisher immer nur die C-Style Arrays (ArrName[n]) in Strukturen gewohnt, aber scheinbar gibt's da keinen (großen) Unterschied. (Laut Hilfe machen C-Arrays "direkte API Strukturen Portierung möglich". Auch mit Bindestrichen würde ich nicht wissen, was das heißt)
Re: ReDim mit Struktur-Arrays
Verfasst: 01.08.2010 12:43
von STARGÅTE
ein fix-Array mit den [ ] kann man nur mit hilfe von selbst erstellten Memory vergrößern:
Am anfang einfach n 0-Array erstellen:
Code: Alles auswählen
Structure Test
Long.l
String.s
Field.i[0] ; 0 damit der Debugger nicht meckert, das man außerhalb des Bereichs kommt.
EndStructure
Debug SizeOf(Test)
und dann mit AllocateMemory je nach bedarf speicher anlegen. Das Array muss dann aber am ende sein, damit man nix überschreibt:
Code: Alles auswählen
*Test.Test = AllocateMemory(SizeOf(Test)+SizeOf(Integer)*10) ; 10 Integer-Felder (also 0 - 9)
*Test\Field[9] = 123