![]() |
Klassen mit verschiedenen Datentypen vergleichen ?
Hallo Leute,
Ich habe folgendes Problem : Ich habe mir 2 Klassen gebastelt
Delphi-Quellcode:
Diese werden durch 2 Arrays verwendet
type TKlasse1 = class
Zahl1 : integer; Txt1 : string; end; type TKlasse2 = class Zahl2 : Integer; Txt2 : String; end;
Delphi-Quellcode:
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 :
aKlasse1 = array [1..1000] of TKlasse1;
aKlasse2 = array [1..1000] of TKlasse2;
Delphi-Quellcode:
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.
var I : Integer;
... for I := 1 to 1000 do begin if aKlasse1[I] = aKlasse2[E] then ... //Meldung dass gleich else ... // Meldung dass ungleich end; 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 |
Re: Klassen mit verschiedenen Datentypen vergleichen ?
Hallo,
Zitat:
Delphi-Quellcode:
Grüsse, Daniel :hi:
var I : Integer;
... for I := 1 to 1000 do begin if aKlasse1[I] = aKlasse2[I] then ... //Meldung dass gleich else ... // Meldung dass ungleich end; |
Moin Urba,
vielleicht hast Du ja auch nicht alles gezeigt, aber wäre ein record in diesem Falle nicht günstiger als eine Klasse? Ausserdem: Warum zwei Deklarationen für den gleichen Inhalt? |
@Daniel :
Das mit dem E war ein Versehen, es soll schon I heissen, wie du schon geschrieben hast. Das Problem ist, dass es scheinbar genau so NICHT funktioniert. Ich bekomme zumindest keine Meldung bei Unterschieden (und ja ich bin mir sicher dass Unterschiede drin sind :D ) @Christian Das mit den Klassen hat schon seinen Sinn :D und die Inhalte der beiden Klassen ist nur als Beispiel gedacht, ich habe in meinem Programm Integer, Byte, Bollean, String etc. als Datentypen (sollte daher nur als Beispiel gelten) |
Moin Urba,
vielleicht solltest Du auch noch mal dazuschreiben, wie Du die Instanzen der Klassen bildest. |
@Christian
Ich weiss zwar nicht wie ich sonst Klassen initialisieren sollte, als wie ich es mache, aber hier bitteschön :D
Code:
aKlasse1[1] := TKlasse1.Create;
|
Da brauchen wohl ein paar Leute Nachhilfe in OOP :dancer2:
Delphi-Quellcode:
Du vergleichst hier nur Pointer, haben die Pointer unterschiedliche Klassen wirst du niemals ein 'true' erhalten. Selbst wenn du zwei Pointer des selben Typs vergleichst und alle Werte der Pointer gleich sind, wird auch niemals ein 'true' dabei rauskommen. Ein 'true' gibts nur wenn beide Pointer tatsächlich auf den selben Speicherbereich zeigen.if aKlasse1[I] = aKlasse2[E] then ... //Meldung dass gleich Du kommst nicht drum herum die Werte der Pointer zu prüfen, mach dir ne schöne Methode und gut is :coder: Man braucht auch nicht zwei Klassen die letztendlich die selben Eigenschaften und Variablen haben, macht überhaupt keinen Sinn! |
Alle Zeitangaben in WEZ +1. Es ist jetzt 12:52 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz