Jump to content

Routine zum Sortieren eines zweidimensionalen Arrays


Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Empfohlene Beiträge

Geschrieben (bearbeitet)

Hallo!

 

Ich überlege gerade wie ich es schaffe mir eine Routine zu basteln mit dem ich ein zweidimensionales Array sortiere und wo ich die Spalte (den Wert der zweiten Dimension) der Routine übergeben.

 

Die Routine sollte etwa soaussehen

 


' Aufbau vom Array
'Verzeichnis1 DateCreated Size
'Verzeichnis2 DateCreated Size

Sub SortArray(byRef arrArray, byVal intSpalte, byVal bolDirection) ' Direction = aufsteigend/absteigend
..
End Sub

 

Mein Problem ist folgendes:

Im Code muss ich mich auf die Spalte beziehen nach der sortiert werden soll. Das ist gleichzeigt der Inhalt von der zweiten Dimension.

 

Wie kann ich im Code die Spalt Adressieren?

Diese wird ja erst zur Laufzeit übergebn!

 

Zudem möche ich das universell gestalten, mit einer beliebigen Anzahl in der erste Dimension und auch in der zweiten Dimension (die Attribute vom Verzeichnis).

 

Beim Aufruf der SUB mächte ich bestimmen nach welcher Spalt sortert wird und in welche Richung (Direction).

 

Wie löst man sowas in VBS/WSH?

 

tks!

Kiddy

bearbeitet von Power-Kiddy
Mehr Infos
Geschrieben

Hallo!

 

Da hatte ich wohl einen Fehler in meinen Überlegungen und habe die Spalten mit den Dimensionen verwechselt!

 

Die Lösung ist recht einfach: Die Spalten sind die Eintrge in der zweiten Dimenstion und damit kann ich die Einträge in der Schleife auch adressieren mit der ich den Sortieralgorythums durchlaufen.

 

HIer der Code:

 

Sub ArraySort(ByRef arrArray, ByVal intSpalte, ByVal bolRichtung)
 Dim intSpalten, i, j, k, Temp

 intSpalten = UBound(arrArray,2)  

 For i = 0 To UBound(arrArray)-1
   For j = i + 1 To UBound(arrArray)
     If bolRichtung Then
       If arrArray(i, intSpalte - 1) > arrArray(j, intSpalte - 1) Then
         For k = 0 To intSpalten
           Temp = arrArray(i, k)
           arrArray(i, k) = arrArray(j, k)
           arrArray(j, k) = Temp
         Next
       End If
     Else
       If arrArray(i, intSpalte - 1) < arrArray(j, intSpalte - 1) Then
         For k = 0 To intSpalten
           Temp = arrArray(i, k)
           arrArray(i, k) = arrArray(j, k)
           arrArray(j, k) = Temp
         Next
       End If
  End If
Next
 Next
End Sub

 

Gruß!

Kiddy

Der letzte Beitrag zu diesem Thema ist mehr als 180 Tage alt. Bitte erstelle einen neuen Beitrag zu Deiner Anfrage!

Erstelle ein Benutzerkonto oder melde dich an, um zu kommentieren

Du musst ein Benutzerkonto haben, um einen Kommentar verfassen zu können

Benutzerkonto erstellen

Neues Benutzerkonto für unsere Community erstellen. Es ist einfach!

Neues Benutzerkonto erstellen

Anmelden

Du hast bereits ein Benutzerkonto? Melde dich hier an.

Jetzt anmelden
×
×
  • Neu erstellen...