AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Komplexe Objekte vergleichen

Ein Thema von Baeuerle · begonnen am 6. Jun 2008 · letzter Beitrag vom 7. Jun 2008
Antwort Antwort
oki

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

Re: Komplexe Objekte vergleichen

  Alt 7. Jun 2008, 17: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
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:59 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