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

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
Link zu diesem Kommentar

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

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

Schreibe einen Kommentar

Du kannst jetzt antworten und Dich später registrieren. Falls Du bereits ein Mitglied bist, logge Dich jetzt ein.

Gast
Auf dieses Thema antworten...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Editor-Fenster leeren

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...