Mit unten stehendem Code habe ich getestet und festgestellt, dass zwar eine Reihenfolge oder das sortierte Feld ausgegeben wird,
jedoch scheinbar auch das Originalfeld mitsortiert wird.
Code: Alles auswählen
Sub test
dim K (4) as integer
dim Z(4) as integer
K(0) = 10
K(1) = 9
K(2) = 8
K(3) = 7
K(4) = 15
Z = fc_Sortieren(K,0,1)
end sub
Function fc_Sortieren(ByRef sortfeld As Variant, pruefdimension%, Sortiervariante As Integer) As Variant
Dim X As Variant, Ergebnisfeld As Variant, X2 As Variant
...
Select Case Sortiervariante
Case 1: ' Das übergebene Feld wird nicht sortiert - Ausgabe einer Sortierreihenfolge
X = sortfeld
fc_Sortieren = fc_Sortieren_X(X, pruefdimension, Dimension, True)
....
Allerdings werden in der nachfolgenden Funktion
Code: Alles auswählen
Function fc_Sortieren_X(ByRef sortfeld As Variant, pruefdimension%, Dimension As Integer, IDfeldausgabe As Boolean) As Variant
...
Dim IDfeld() As Integer
<sortfeld und IDfeld werden bearbeitet>
...
<>
If IDfeldausgabe Then fc_Sortieren_X = IDfeld
Z erhält zwar korrekterweise die ID Reihenfolge (also Z(0) = 4...) jedoch ist K(0) = 15
Selbst, wenn ich statt X = sortfeld
Code: Alles auswählen
Function fc_Wert (byval XY as variant) as variant
fc_Wert = XY
end function
Ist das ein BUG?
Wie kann ich es erreichen, dass nur eine Kopie des Feldes an die untergeordnete Sortierfunktion übergeben wird?
Ein ByVal als Prozedurübergabewert muss leider ausfallen, da die Funktion (eigentlich) beides kann:
Felder sortieren und das Originalfeld unangetastet lassen.