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