Rubrik: Variablen/Strings | VB-Versionen: VB.NET | 27.07.05 |
Zwei UDT´s miteinander vergleichen (VB.NET) Die Inhalte der einzelnen Members zweier UDT-Variablen miteinander zu vergleichen, ist unter VB.NET mehr als einfach :-) | ||
Autor: Dieter Otter | Bewertung: | Views: 14.692 |
www.tools4vb.de | System: WinNT, Win2k, WinXP, Win7, Win8, Win10, Win11 | kein Beispielprojekt |
Hin und wieder erstellt man sich zum Speichern von Daten ein UDT - eine User-Defined-Type Struktur oder zu deutsch: benutzerdefinierter Datentyp. Hierbei handelt es sich um eine Art "Datensatz", welcher mehrere zusammengehörende Elemente enthält.
Beispiel für einen benutzerdefinierten Datentyp (UDT):
Private Structure Adresse Public Anrede As String Public Name As String Public Vorname As String Public Firma As String Public Strasse As String Public PLZ As String Public Ort As String Public Land As String Public Telefon As String Public Fax As String Public EMail As String Public GebDatum As Date Public InfoMail As Boolean End Structure
Solch ein benutzerdefinierter Datentyp wird dann wie folgt mit den entsprechenden Daten gefüllt:
Dim oKunde As Adresse With oKunde .Anrede = "Herr" .Name = "Otter" .Vorname = "Dieter" .Firma = "Software-Entwicklung & Vertrieb" ... .MailInfo = True End With
Verwendet man mehrere solcher Datentypen, bzw. ein Array, und muss nun eine Struktur mit einer Zweiten vergleichen, könnte man meinen, man müsse dies wie folgt machen:
With oKunde(1) If .Anrede = oKunde(2).Anrede AND _ .Name = oKunde(2).Name AND _ .Vorname = oKunde(2).Vorname AND _ ... .MailInfo = oKunde(2).MailInfo Then MsgBox "Beide UDTs sind identisch!" Else MsgBox "UDTs unterscheiden sich!" End If End With
Diese Vorgehensweise ist bei umfangreichen Datenstrukturen natürlich sehr aufwendig.
Unter VB.NET gibt da aber eine viel einfachere Möglichkeit!
Jedes UDT-Objekt enthält hier autom. eine Equals-Funktion, mit der sich das UDT mit einem zweiten UDT sehr einfach vergleichen lässt. Sind alle Mitglieder identisch, gibt "Equals" True zurück, andernfalls False.
If oKunde(1).Equals(oKunde(2)) Then MsgBox "Beide UDTs sind identisch!" Else MsgBox "UDTs unterscheiden sich!" End If