vb@rchiv
VB Classic
VB.NET
ADO.NET
VBA
C#
NEU! sevCoolbar 3.0 - Professionelle Toolbars im modernen Design!  
 vb@rchiv Quick-Search: Suche startenErweiterte Suche starten   Impressum  | Datenschutz  | vb@rchiv CD Vol.6  | Shop Copyright ©2000-2025
 
zurück

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

VB.NET - Fortgeschrittene
Re: Sortieren eines strukturierten Arrays 
Autor: ModeratorDaveS (Moderator)
Datum: 22.09.03 09:12

Eigentlich ist es etwa überflüssig eine Sort-Algorithmus zu programmieren, da die Arrayklasse schon über eiffizeinten Sort verfügt.

Die .Net Methode ist die entsprechenden Interfaces zu kennen. Da hast du die Wahl zwischen IComparable und IComparer. Da hier ein Sortfeld übergeben werden muss und man besser auf globale Felder verzichtet ist IComparer die bessere Wahl. Dieser Code wählt das Feld mit Select-Case aus, obwohl man das auch etwas klüger programmieren könnte.
Structure PrototypeDaten
        Public Counter As Integer
        Public Traffic As Long
        Public StartTime As Date
        Public StopTime As Date
        Public Name As String
    End Structure
 
    Private Class ComparePrototypeDaten
        Implements IComparer
        Private _field As String
        Private _desc As Integer
 
        Public Sub New(ByVal field As String, ByVal desc As Boolean)
            _field = field
            _desc = IIf(desc, -1, 1)
        End Sub
        Public Function compare(ByVal a As Object, ByVal b As Object) As _
          Integer Implements IComparer.Compare
            Dim a1 As PrototypeDaten = CType(a, PrototypeDaten)
            Dim b1 As PrototypeDaten = CType(b, PrototypeDaten)
 
            Select Case _field
                Case "Counter"
                    Return _desc * a1.Counter.CompareTo(b1.Counter)
                Case "traffic"
                    Return _desc * a1.Traffic.CompareTo(b1.Traffic)
                Case "StartTime"
                    Return _desc * a1.StartTime.CompareTo(b1.StartTime)
                Case "StopTime"
                    Return _desc * a1.StopTime.CompareTo(b1.StopTime)
                Case "Name"
                    Return _desc * a1.Name.CompareTo(b1.Name)
            End Select
        End Function
    End Class
    Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As _
      System.EventArgs) Handles MyBase.Load
        Dim apd(3) As PrototypeDaten
        Dim desc As Boolean = False
 
        apd(0) = New PrototypeDaten
        apd(0).Counter = 33
        apd(0).StartTime = Now.AddHours(1)
        apd(0).Name = "FFFF"
 
        apd(1) = New PrototypeDaten
        apd(1).Counter = 14
        apd(1).StartTime = Now.AddHours(-1)
        apd(1).Name = "AAAA"
 
        apd(2) = New PrototypeDaten
        apd(2).Counter = 19
        apd(2).StartTime = Now
        apd(2).Name = "HHHH"
 
        apd(3) = New PrototypeDaten
        apd(3).Counter = 17
        apd(3).StartTime = Now.AddMinutes(30)
        apd(3).Name = "BBBB"
 
        papd(apd)
 
        Array.Sort(apd, New ComparePrototypeDaten("Counter", desc))
        papd(apd)
 
        Array.Sort(apd, New ComparePrototypeDaten("StartTime", desc))
        papd(apd)
 
        Array.Sort(apd, New ComparePrototypeDaten("Name", desc))
        papd(apd)
 
    End Sub
 
    Private Sub papd(ByVal apd() As PrototypeDaten)
        For Each pd As PrototypeDaten In apd
            Debug.WriteLine("Counter: " + pd.Counter.ToString() + " StartTime:" & _
              "" + pd.StartTime.ToString() + " Name: " + pd.Name)
        Next
        Debug.WriteLine( _
          "******************************************************")
    End Sub
Diese Interfaces sind wichtig, da viele .Net Klassen die Objekte vergleichen müssen (etwa Collectionklassen) diese Interfaces unterstützen.
alle Nachrichten anzeigenGesamtübersicht  |  Zum Thema  |  Suchen

 ThemaViews  AutorDatum
Sortieren eines strukturierten Arrays976Jin_und21.09.03 14:53
Re: Sortieren eines strukturierten Arrays929ModeratorDaveS22.09.03 09:12
Re: Sortieren eines strukturierten Arrays599Jin_und22.09.03 13:59

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-2025 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