Seite 1 von 1

SortStructuredArray

Verfasst: 14.07.2012 10:14
von gnaps
Hallo Forum,

ich versuche mich gerde an SortStructuredArray, kann mir einer die Option [, Start, Ende]) erläutern.
oder kann ich z.b.

Code: Alles auswählen

Structure S_Bild
  Zeit.s
  Bild.s
EndStructure

Global Dim Images.S_Bild(3,6,9)

Ich bekomme in Images.S_Bild 280 Einträge.
Kann ich jetzt damit die Einträge von 0-9, 10-19, 20-29 usw. sortieren lassen?

gruß
gnaps

Re: SortStructuredArray

Verfasst: 14.07.2012 10:45
von STARGÅTE
Leider weiß ich nicht, ob man überhaupt mehrdimensionale Array sortieren lassen kann.
Aber ich vermute, dass SortStructuredArray() einfach das im Speicher liegende 1D-Array sortiert.

Von daher sollte dieses Beispiel funktionieren.

Code: Alles auswählen

#RandomString_Letter  = "abcdefghijklmnopqrstuvwxyz"
Structure CharacterArray
	c.c[0]
EndStructure
Procedure.s RandomString(Length.i, CharacterSet.s=#RandomString_Letter)
	Protected Index.i, Len.i = Len(CharacterSet)-1
	Protected *CharacterSet.CharacterArray = @CharacterSet
	Protected String.s = Space(Length)
	Protected *String.CharacterArray = @String
	While Index < Length
		*String\c[Index] = *CharacterSet\c[Random(Len)]
		Index + 1
	Wend
	ProcedureReturn String
EndProcedure  



Structure S_Bild
  Zeit.s
  Bild.s
EndStructure

Global Dim Images.S_Bild(3,6,9)

For x = 0 To 3
	For y = 0 To 6
		For z = 0 To 9
			Images(x,y,z)\Bild = RandomString(8,"abcdefghijklmnopqrstuvwxyz")
		Next
	Next
Next

For y = 0 To 2
	For z = 0 To 9
		Debug "(0,"+Str(y)+","+Str(z)+") = "+Images(0,y,z)\ Bild
	Next
Next

For y = 0 To 2
	SortStructuredArray(Images(), #PB_Sort_Ascending, OffsetOf(S_Bild\Bild), #PB_Sort_String, y*10, y*10+9)
Next

Debug "---"
For y = 0 To 2
	For z = 0 To 9
		Debug "(0,"+Str(y)+","+Str(z)+") = "+Images(0,y,z)\ Bild
	Next
Next
Das Sortiert immer genau die 10 Bilder aus der letzten Dimension.

Re: SortStructuredArray

Verfasst: 14.07.2012 12:16
von gnaps
Hallo STARGÅTE

geht, hat bei mir geklappt.

Structure S_Bild
Zeit.s
Bild.s
EndStructure

wie Du hier siehst habe ich auch zeit.s, nach diesem habe ich das ganze sortieren lassen,
jetzt kommt das nächste Problem. Wenn einige String = "" sind werden diese Einträge in
der Sortierung an die ersten Stellen sortiert. Gibts da eine Möglichkeit die leeren Strings
ans Ende sortieren zu lassen ?

Gruß
gnaps