PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Array positionen verschieben



cardhu
01.10.2008, 20:21
Hallo was muss ich tun damit dieser Code in Basom funktioniert bin nicht sehr gut in Programmierung wäre für jede Hilfe dankbar auch andere Vorschläge die es mir ermöglichen Positionen in Arrays zu verschieben und die anderen aufrücken zu lassen

Danke schonmal

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

Jaecko
23.10.2008, 11:17
Zwar schon altes Thema, aber falls es noch nicht geht: Berechne die Indizes in den Klammern schon mal im Voraus.
Bin mir nicht sicher ob Bascom hier ( vList(nElement + nMove) = vTemp
) checkt, dass es in der Klammer rechnen muss.