Einzelnen Beitrag anzeigen

oki

Registriert seit: 30. Dez 2002
Ort: Brandshagen
1.819 Beiträge
 
Delphi 2007 Professional
 
#8

Re: Komplexe Objekte vergleichen

  Alt 7. Jun 2008, 16:11
Hi,

wenn du a und b vergleichst, dann sind die definitiv unterschiedlich. A und b sind jeweils ein eingenes Object deiner Klasse. Die Frage ist jetzt was du vergleichen willst. Da bietet sich folgendes an:

1. gleiches Object dessen Adresse in unterschiedlichen Variablen gespeichet wurde.
Delphi-Quellcode:
var a, b: TTest;

a:=TTest.Create;
b:=a;
Hier ist a = b.

2. gleiche Klasse aber unterschiedliche Objecte.
Delphi-Quellcode:
var a, b: TTest;

a:=TTest.Create;
a.name:='Hallo Welt';
b:=TTest.Create;
b.name:='Hallo Welt';
Hier gilt:
if (a is TTest) and (b is TTest) ergibt True. Also beide Objecte der gleichen Klasse.

3. Gleiche Klasse, unterschiedliche Objecte gleicher Inhalt.
Ich nehme mal an, darauf willst du hinaus. Imho sehe ich da eine eigene Function, wie Assign, nur mit Vergleich und nicht mit Zuweisung. Das ist dann leider Schreibarbeit. Du mußt wirklich alle Eigneschaften vergleichen. Zum Glück aber nich mehr.
Delphi-Quellcode:
type
TTest = class(TObject)
private
  FList: TStringList;
  FName: String;
  FBoll: Boolean;
  FButton: TButton;
public
  constructor Create;
  Function Compare(Source : TTest) : Boolean;
  property List: TStringList read FList write FList;
  property Name: String read FName write FName;
end;

Function TTest.Compare(Source : TTest) : Boolean;
begin
  Result := True;
  // die einzelnen Einträge der Liste incl. Objekte in Objects vergleichen; Im Notfall auf gleiche Instanz, sonnst eine eigene Compare Methode
  // alle Eigenschaften vergleichen wie FName ....
end;
Sollte bei den enthalten Klassen dies alles auch in den Propertys identisch sein, so sehe ich schwarz.

Imho würde ich dann anders herum ran gehen. Nicht prüfen, ob die identisch sind, sondern schauen ob sie identisch sein sollen. Wenn ja, mit Assign zuweisen. Dann sind sie identisch. imho brauch TTest dann natürlich auch eine eigene Assign-Methode.

Wozu brauchst du das eigentlich?

Gruß oki

Ach menne, ich gebs auf heute. Schon wieder roter Kasten.
42
  Mit Zitat antworten Zitat