vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
SEPA-Dateien erstellen inkl. IBAN-, BLZ-/Kontonummernprüfung  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2024
 
zurück

 Sie sind aktuell nicht angemeldet.Funktionen: Einloggen  |  Neu registrieren  |  Suchen

VB.NET - Ein- und Umsteiger
List (of T).sort mit Fehlermeldung 
Autor: Rudi2301
Datum: 27.06.19 15:55

Hallo an Alle
ich habe eine List(Of point).
Beim Versuch die Liste zu sortieren kommt die Fehlermeldung
"Fehler beim Vergleichen von zwei Elementen im Array."

Mit
Dim sortierteliste = From a In Plist Select a Order By a.X
erhalte ich eine sortierte Liste im Speicher.

Ich weiss leider nicht wie ich diese Liste weiter bearbeiten kann.
Vielleicht hat jemand eine Idee wie ich da dran komme.

Danke im Voraus.

Rudi2301
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: List (of T).sort mit Fehlermeldung 
Autor: HenryV
Datum: 27.06.19 16:26

Wieso verwendest du nicht einfach die List<T>.Sort Methode
PList.Sort(Function(p1, p2) (p1.X.CompareTo(p2.X)))
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: List (of T).sort mit Fehlermeldung 
Autor: Rudi2301
Datum: 27.06.19 16:46

Hallo Henry
Danke für deinen Tip.
Ich habe viel davon gelesen, aber nix kapiert.
Jetzt geht es, klappt wunderbar.
Wieder was neues dazugelernt.
Noch mal vielen Dank

Rudi2301
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: List (of T).sort mit Fehlermeldung 
Autor: Manfred X
Datum: 28.06.19 09:18

Hallo!

Hierarchisches Sortieren X -> Y
Sei plist eine List(of System.Drawing.Point):
plist.Sort(Function(p1, p2) (If(p1.X.CompareTo(p2.X) = 0, p1.Y.CompareTo(p2.Y), _
  p1.X.CompareTo(p2.X))))
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: List (of T).sort mit Fehlermeldung 
Autor: Rudi2301
Datum: 28.06.19 10:18

Hallo Manfred

Seit dem letzten Post versuche ich die doppelten Koordinaten aus der Plist zu entfernen.
Mit deinem letzten Tip hat das hervorragend geklappt.
Vielen Dank dafür, hat mir sehr geholfen.
Komisch ist
Plist.sort()
ergibt eine Fehlermeldung.
Dagegen
Plist.Reverse
klappt.
Nochmal Dank dafür.

Rudi
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Re: List (of T).sort mit Fehlermeldung 
Autor: Manfred X
Datum: 28.06.19 11:05

Beim Sortieren werden die Elemente durch einen Algorithmus paarweise verglichen.
Dafür braucht es eine Vergleichsmethode (in der Klasse/Struktur
als Standard implementierte Icomparable-Schnittstelle oder als Parameter der Sort-Methode
gegeben).

Die Point-Structure implementiert keine derartige Schnittstelle. Genau das besagt auch
die Fehlermeldung, die Du erhalten hast.

Der Reverse-Methode der generischen Liste ist es egal, welche Elemente in der Liste stehen.
Sie dreht einfach die Reihenfolge der Elemente in der Liste um. Dazu benötigt sie keine
Eigenschaft der enthaltenen Elemente. Das klappt also immer.

Der hierarchische Reverse-SORTIERER sieht so aus:
 plist.Sort(Function(p1, p2) 
 (If(p1.X.CompareTo(p2.X) = 0, (-1) * p1.Y.CompareTo(p2.Y), (-1) * _
   p1.X.CompareTo(p2.X))))
Oder so:
plist.Sort(Function(p1, p2) (If(p1.X.CompareTo(p2.X) = 0, p2.Y.CompareTo(p1.Y), _
  p2.X.CompareTo(p1.X))))
(P1 und P2 beim Vergleich -Ungleichheit- mit 'CompareTo' ausgewechselt)

Beitrag wurde zuletzt am 28.06.19 um 11:11:49 editiert.
Themenbaum einblendenGesamtübersicht  |  Zum Thema  |  Suchen

Sie sind nicht angemeldet!
Um auf diesen Beitrag zu antworten oder neue Beiträge schreiben zu können, müssen Sie sich zunächst anmelden.

Einloggen  |  Neu registrieren

Funktionen:  Zum Thema  |  GesamtübersichtSuchen 

nach obenzurück
 
   

Copyright ©2000-2024 vb@rchiv Dieter Otter
Alle Rechte vorbehalten.
Microsoft, Windows und Visual Basic sind entweder eingetragene Marken oder Marken der Microsoft Corporation in den USA und/oder anderen Ländern. Weitere auf dieser Homepage aufgeführten Produkt- und Firmennamen können geschützte Marken ihrer jeweiligen Inhaber sein.

Diese Seiten wurden optimiert für eine Bildschirmauflösung von mind. 1280x1024 Pixel