Yes — in AutoHotkey v2 you can nest arrays inside arrays. An array element can itself be another array, object, or map. (autohotkey.wiki) ahk arr := [ ["a", "b", "c&qu...
Wie sortiere ich in VB.NET 2003 ein Array mit 4 Spalten und x Zeilen nach Zeilen?
Antwort vom**In VB.NET 2003 kannst du ein „2D-Array“ (`Dim a(x,3)`) nicht direkt nach Zeilen sortieren. Praktisch musst du immer ganze Zeilen gegeneinander tauschen – also z. B. per BubbleSort oder indem du die Daten erst in ein sortierbares Objekt-Array umbaust.** ## Direktlösung für ein 2D-Array Wenn dein Array 4 Spalten und beliebig viele Zeilen hat, sortierst du nach einer bestimmten Spalte, indem du beim Vergleich zwei Zeilen prüfst und bei Bedarf **alle 4 Spaltenwerte der beiden Zeilen tauschst**. Beispiel: Sortierung nach **Spalte 0** aufsteigend. ```vbnet Dim arr(,) As String = { _ {"C", "x1", "y1", "z1"}, _ {"A", "x2", "y2", "z2"}, _ {"B", "x3", "y3", "z3"} _ } Dim rows As Integer = arr.GetUpperBound(0) Dim cols As Integer = arr.GetUpperBound(1) Dim i As Integer Dim j As Integer Dim c As Integer Dim temp As String For i = 0 To rows - 1 For j = i + 1 To rows If arr(i, 0) > arr(j, 0) Then For c = 0 To cols temp = arr(i, c) arr(i, c) = arr(j, c) arr(j, c) = temp Next End If Next Next ``` Danach ist die Reihenfolge der Zeilen: - A, x2, y2, z2 - B, x3, y3, z3 - C, x1, y1, z1 ## Entscheidend dabei Der wichtige Punkt ist: Du sortierst **nicht einzelne Spalten**, sondern **komplette Zeilen als Einheit**. Falsch wäre also: - nur `arr(i,0)` und `arr(j,0)` tauschen Richtig ist: - wenn Spalte 0 entscheidet, dass Zeile `j` vor Zeile `i` gehört, dann müssen **alle 4 Spalten dieser beiden Zeilen** getauscht werden. ## Wenn Zahlen sortiert werden sollen Falls in Spalte 0 Zahlen als String stehen, sortiert der obige Code alphabetisch, also z. B. `"10"` vor `"2"`. Dann musst du numerisch vergleichen: ```vbnet If CInt(arr(i, 0)) > CInt(arr(j, 0)) Then ``` ## Bessere Lösung für VB.NET 2003 Sauberer ist es, die Daten nicht als 2D-Array zu halten, sondern als Array von Objekten oder Strukturen. Dann lässt sich jede Zeile als Datensatz behandeln. Gerade in VB.NET 2003 ist das langfristig deutlich wartbarer als ein starres `String(,)`. Kurz gesagt: **Bei einem 2D-Array in VB.NET 2003 sortierst du, indem du die Vergleichsspalte prüfst und dann immer die komplette Zeile tauschst.**
Verwandte Fragen
Wie heißen die einzelnen Menügruppen im MainMenu von VB.NET 2003?
Ja: Diese Einträge heißen in VB.NET 2003 beim MainMenu in der Praxis meist Top-Level-Menüpunkte oder Hauptmenüs; technisch sind es MenuItem-Objekte. Wenn du also „Datei&ldq...