Ein echtes 2D-Array in VB.NET 2003 kannst du nicht direkt mit Array.Sort sortieren; praktisch musst du die Zeilen entweder selbst tauschen oder die Daten zuerst in eine sortierbare Struktur umbauen. A...
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
VB.NET 2003: Was ist der Unterschied zwischen 'text1 += text2' und 'text1 &= text2'?
Ja: In VB.NET 2003 ist für Strings praktisch kein relevanter Unterschied im Ergebnis da – beide hängen text2 an text1 an. Der echte Unterschied ist semantisch: &= ist der String-Ve...
VB.NET 2003: Wie prüft man richtig, ob ein Pixel nicht transparent ist?
Richtig ist meist nicht der direkte Vergleich mit Color.Transparent, sondern die Alpha-Komponente zu prüfen: vb If bmp.GetPixel(x, y).A <> 0 Then ' Pixel ist nicht transparent End If...
Wirkt „Exit For“ in VB.NET 2003 bei geschachtelten Schleifen auf alle Schleifen oder nur auf die aktuelle?
Exit For beendet in VB.NET 2003 nur die aktuelle For-Schleife, nicht alle geschachtelten Schleifen. Wenn du aus mehreren Ebenen gleichzeitig raus willst, brauchst du zusätzliche Logik, z. B. ein...
Kann man in VB.NET 2003 vorübergehend alle Shortcuts deaktivieren und Tastenkombinationen wie Strg+A als String in eine TextBox einfügen?
Ja – aber nicht global für ganz Windows, sondern innerhalb deiner VB.NET-2003-Anwendung. Du musst die Tastenkombinationen selbst abfangen, Standard-Shortcuts unterdrücken und aus den g...
Wie lösche ich in VB.NET 2003 alle ausgewählten Einträge aus einer ListBox?
In VB.NET 2003 löschst du mehrere markierte ListBox-Einträge am sichersten rückwärts über SelectedIndices, weil sich die Indizes beim Entfernen sofort verschieben. vb Dim i A...
Bis zu welcher Version läuft VB.NET unter Windows XP?
Unter Windows XP läuft VB.NRT höchstens mit einer Version, die noch auf .NET Framework 4.0/4.0.3 basiert – neuere Builds mit höherem .NET-Unterbau laufen auf XP nicht mehr. Micros...
Kann man in VB.NET 2003 Bilder in DLLs speichern und im aktuellen Projekt anzeigen?
Ja – in VB.NET 2003 kannst du Bilder in einer DLL speichern und im aktuellen Projekt anzeigen. Der saubere Weg ist, die Bilder als eingebettete Ressourcen in die DLL aufzunehmen und sie zur Lauf...
Wie lassen sich in VB.NET 2003 Änderungen an einer Originaldatei automatisch in mehreren Projekten aktualisieren?
Ja – aber nicht zuverlässig über „Kopien“ derselben Datei. Der saubere Weg ist, den gemeinsamen Code in eine zentrale Stelle auszulagern; nur dann wirken Änderungen au...
Wie markiert man in VB.NET 2003 in einer RichTextBox alle Vorkommen einer Zeichenkette?
In einer RichTextBox markierst du alle Vorkommen, indem du mit Find ab einer Startposition wiederholt suchst und jeden Treffer per Select + SelectionBackColor hervorhebst; eine eingebaute „Alle...