Rubrik: Variablen/Strings · Arrays | VB-Versionen: VB5, VB6 | 07.11.02 |
Array-Elemente beliebig verschieben Eine Funktion, mit der sich ein Array-Element beliebig nach vorne bzw. nach hinten schieben lässt. | ||
Autor: Nico Heidtke | Bewertung: | Views: 33.685 |
home.t-online.de/home/michaelheidtke | System: Win9x, WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Sie haben ein Array und wollen dass z.B. das 3. Element an die Position 1 schieben, wobei die Elemente 1 und 2 jeweils nach hinten rutschen sollen? Oder: Das Element 2 soll um 10 Elemente nach hinten verschoben werden. Oder...
Mit nachfolgender Funktion geht's ganz einfach - in jede Richtung.
' Array-Element um x-Positionen nach vorne/hinten ' verschieben Public Function MoveInList(vList As Variant, _ ByVal nElement As Long, _ ByVal nMove As Long) Dim i As Long Dim vTemp As Variant Dim nSize As Long Dim nMode As Integer ' Dimensionsgröße nSize = UBound(vList) ' Plausibilitätsprüfungen If nElement + nMove < 0 Then nMove = nMove - (nMove + nElement) End If If nElement + nMove > nSize Then nMove = nSize - nElement End If ' Mode: nach hinten oder nach vorne verschieben? ' (Vorzeichen ermitteln) nMode = Sgn(nMove) ' Gültiger Wert? If nMode <> 0 Then ' zu verschiebendes Element "merken" vTemp = vList(nElement) ' Jetzt die einzelne Elemente verschieben For i = nElement + nMode To nElement + nMove Step nMode vList(i - nMode) = vList(i) Next i ' Element an die gewünschte Position setzen vList(nElement + nMove) = vTemp End If End Function
Beispiel:
Es existiert folgendes Array:
sText(0) = "Anton" sText(1) = "Berta" sText(2) = "Christa" sText(3) = "Dieter" sText(4) = "Egon" sText(5) = "Friedrich" sText(6) = "Gunther" sText(7) = "Heinrich"
Das Element 3 (Dieter) soll jetzt zwei Position nach hinten (unten) verschoben werden, so dass Egon und Friedrich nach vorne rutschen:
' Element 3 nach Position 5 schieben MoveInList sText(), 3, 2
Und heraus kommt jetzt folgende Reihenfolge:
sText(0) = "Anton" sText(1) = "Berta" sText(2) = "Christa" sText(3) = "Egon" sText(4) = "Friedrich" sText(5) = "Dieter" sText(6) = "Gunther" sText(7) = "Heinrich"