Seite 1 von 1

Arrays in Maps

Verfasst: 23.05.2011 14:36
von Bisonte
Hallo.

Ich verzweifel hier gerade an einem "Syntax Fehler"

Code: Alles auswählen

Structure xyz
  Array String.s(1)
EndStructure
Structure def
  Map Name.xyz()
EndStructure

AB.def
ab\Name("Hallo")\String(0) = "Hey"

Dim ab\Name("Hallo")\String.s(10)
Dim oder ReDim gibt immer Syntax Fehler.

Wenn ich allerdings Map durch List ersetze klappt es reibungslos.

Code: Alles auswählen

Structure xyz
  Array String.s(1)
EndStructure
Structure def
  List Name.xyz()
EndStructure

AB.def
AddElement(ab\Name())
ab\Name()\String(0) = "Hey"
Dim ab\Name()\String.s(10)
Wie kann ich aber nun eine Map mit einem integrierten Array neu Dimensionieren ?
Weil bei der Initialisierung die Anzahl nicht bekannt ist. Eine Liste ist nicht wünschenswert,
da ich diese Daten in einer bestimmten Reihenfolge brauche... (Datenbank Row&Field)

Re: Arrays in Maps

Verfasst: 23.05.2011 14:38
von STARGÅTE
Liegt vermutlich an dem String der bei der Map benutzt wird.

Ntze ein "zwischen" Pointer, um das Array zu vergrößern:

Code: Alles auswählen


Structure xyz
  Array String.s(1)
EndStructure
Structure def
  Map Name.xyz()
EndStructure

AB.def
ab\Name("Hallo")\String(0) = "Hey"

*xyz.xyz = @ab\Name("Hallo")

Dim *xyz\String(10) 

Debug ArraySize(ab\Name("Hallo")\String())
EDIT: Mit einem Pointer an dieser Stelle zu arbeiten ist auch ein Geschwindigkeitsvorteil, da nicht bei jedem Abruft des Map-Element über den String, der Hash errechnet werden muss, usw.

Re: Arrays in Maps

Verfasst: 23.05.2011 14:49
von Bisonte
Der Retter in der Not :allright:

Ist das nun ein Bug ? Oder steht das irgendwo geschrieben, dieses Verhalten ?

Re: Arrays in Maps

Verfasst: 23.05.2011 14:55
von STARGÅTE
Ne ist vermutlich n BUG ...

Re: Arrays in Maps

Verfasst: 23.05.2011 15:17
von DrShrek
STARGÅTE hat geschrieben:Ne ist vermutlich n BUG ...
DAnn macht bitte auch eine BUG Meldung, sonst bleibt das womöglich ungefixed (bis es der nächste merkt)

Re: Arrays in Maps

Verfasst: 23.05.2011 15:27
von STARGÅTE