Entwickler-Ecke
Delphi Language (Object-Pascal) / CLX - Klassen mit verschiedenen Datentypen vergleichen ?
Urba - Sa 28.06.03 16:32
Titel: Klassen mit verschiedenen Datentypen vergleichen ?
Hallo Leute,
Ich habe folgendes Problem :
Ich habe mir 2 Klassen gebastelt
Delphi-Quelltext
1: 2: 3: 4: 5: 6: 7: 8: 9:
| type TKlasse1 = class Zahl1 : integer; Txt1 : string; end;
type TKlasse2 = class Zahl2 : Integer; Txt2 : String; end; |
Diese werden durch 2 Arrays verwendet
Delphi-Quelltext
1: 2:
| aKlasse1 = array [1..1000] of TKlasse1; aKlasse2 = array [1..1000] of TKlasse2; |
So, diese beiden Arrays möchte ich nun vergleichen, aber die unterschiedlichen Datentypen innerhalb der Klassen sind das Problem. Bisher wollte ich es folgendermaßen probieren :
Delphi-Quelltext
1: 2: 3: 4: 5: 6:
| var I : Integer; ... for I := 1 to 1000 do begin if aKlasse1[I] = aKlasse2[E] then ... else ... end; |
Das Problem ist jetzt dass ich nicht die richtigen Abgleichungen bekomme, ich aber auch nicht die einzelnen Einträge der Klassen (Zahl und Txt) unterschen möchte, da sich diese vorraussichtlich noch ändern können.
Daher meine Frage : Ist es möglich 2 Klassen verschiedener Datentypen zu vergleichen. Soweit ich noch weiss gibt es eine solche Funktion in Java auch, daher gehe ich eigentlich davon aus, dass sie auch in Delphi vorhanden ist.
Kann mir jemand helfen ?
Mit freundlichen Grüßen
Urba
Moderiert von
Tino: Code- durch Delphi-Tags ersetzt.
CenBells - Sa 28.06.03 16:55
du kannst die klassen nur auf echte gleichheit testen und nicht auf die daten. So wie in java läuft das in delphi meines Wissens nicht. Das bedeutet also, daß du jedesmal die einzelnen Felder, also Zahl und Txt explizit miteinander vergleichen musst. Sonst wirst du nicht rausfinden, ob zwei instanzen der Klasse gleich sind, oder nicht....
Sollte ich hier mist verzapft haben, lass ich mich aber gerne eines besseren belehren... :wink:
Gruß
Ken
UGrohne - Sa 28.06.03 17:03
Du vergleichst hier nur Referenzen auf Speicherbereiche, das ist das Problem, aber die Lösung kannr echt einfach sein:
Du musst nur eine (oder beide Klassen) um eine Compare-Funktion erweitern, in der Du dann den Inhalt vergleichen kannst. Diese Funktion braucht nur einen Parameter vom Klassentyp und das wars.
Hast Du die beiden Klassen wirklich so angelegt? Wenn ja, warum? So wie die aussehne, reicht doch eine Klasse und dann eben die beiden Arrays als Instanzen derselben Klasse. Brauchst dann die Vergleichsprozedur nur einmal schreiben.
Urba - Sa 28.06.03 17:07
Die Datenwerte sind nur als Beispiel genommen. Ich habe nach einer solchen Funktion gesucht, da die Einträge sich noch ändern können und nicht immer die neuen Einträge hinzuschreiben möchte.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2026 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!