Announcement

Collapse
No announcement yet.

Vererbte Objecte vergleichen

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Vererbte Objecte vergleichen

    Hallo,<p>

    ich habe das Problem im Vorgängerobject die Eigenschaften des Nachfolgeobjektes auf Veränderungen zu überprüfen. Die Eigenschaften des Nachfolgeobjektes werden beim Create eingelesen und können vom Anwender geändert werden. Vor dem Zurückschreiben der Eigenschaften muß ich überprüfen, ob währende der Benutzung die Eigenschaften nicht von Dritten geändert wurden. Hierzu möchte ich die Eigenschaften meines vererbten Objects in einer Methode des Vorgängerobjektes vergleichen.<p>
    Hat jemand eine Idee der Realisierung?<p>

    MFG Uwe

  • #2
    Hi

    Grundsätzlich läuft es darauf hinaus das das Mutterobject keinerlei Informationen haben kann welche und wieviele Eigenschaften abgeleitete Objecte einführen. Deshalb ist der einfachste und eleganteste weg folgender:

    <pre>

    type
    TBaseObject = class
    private
    FModified: Boolean;
    protected
    procedure MakeModified; dynamic;
    public
    procedure Reset; dynamic; // sollte FModified zurücksetzen
    property Modified: Boolean read FModified;
    end;<br>

    TChild = class(TBaseClass)
    private
    FName: String;
    procedure SetName(const Value: String);
    public
    property Name: String read FName write SetName;
    end;

    procedure TChild1.SetName(const Value: String);
    begin
    if Value <> FName then
    begin
    MakeModified;
    FName := Value;
    end;
    end;

    </pre>

    Beachte das ich MakeModified VOR der Änderung der Daten aufrufe, da dann MakeModified z.b. eine Exception auslösen kann falls z.B. das Object readonly ist.

    Mein Vorschlag ist also die Zugriffsmethoden der Properties zu nutzen. Das ist zwar im ersten Blick aufwendiger, wird aber im späteren Zeitpunkten echt entlohnt.

    Gruß Hage

    Comment

    Working...
    X