Autor Beitrag
Urba
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47



BeitragVerfasst: Sa 28.06.03 16:32 
Hallo Leute,

Ich habe folgendes Problem :

Ich habe mir 2 Klassen gebastelt
ausblenden 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
ausblenden Delphi-Quelltext
1:
2:
aKlasse1 = array [1..1000of TKlasse1; 
aKlasse2 = array [1..1000of 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 :
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
var I : Integer; 
... 
for I := 1 to 1000 do begin 
  if aKlasse1[I] = aKlasse2[E] then ... //Meldung dass gleich 
  else ... // Meldung dass ungleich 
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 user profile iconTino: Code- durch Delphi-Tags ersetzt.
CenBells
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 1547

Win 7
Delphi XE5 Pro
BeitragVerfasst: 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
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Veteran
Beiträge: 5502
Erhaltene Danke: 220

Windows 8 , Server 2012
D7 Pro, VS.NET 2012 (C#)
BeitragVerfasst: 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 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 47



BeitragVerfasst: 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.