Einzelnen Beitrag anzeigen

norwegen60

Registriert seit: 23. Dez 2007
Ort: Schwarzwald
505 Beiträge
 
Delphi 12 Athens
 
#6

AW: Objekt in Liste mit anderer Instanz ersetzen ohne Referenz zu verlieren

  Alt 7. Feb 2023, 11:22
Meine Klasse sieht prinzipiell so aus. Hier schon mit dem Assign, wie ich es verstanden hätte
Delphi-Quellcode:
  
  TMyBaseClass = class;
  private
    FID:Integer;
    FName: String;

    procedure SetID(const Value: Integer);
    procedure SetName(const Value: String);
  public
    property ID: Integer read FID write SetID;
    property Name: String read FName write SetName;

    constructor Create;
    destructor Destroy; override;

    procedure Assign(aNewValue:TMyBaseClass);

    function FunctionB1: String;
    procedure ProcB1(sMsg: String);
  end;

  TMyClass = class(TMyBaseClass);
  private
    FInfo:String;

    procedure SetInfo(const Value: String);
  public
    property Info: String read FInfo write SetInfo;

    constructor Create;
    destructor Destroy; override;

    procedure Assign(aNewValue:TMyClass);
    function Function10: String;
    procedure Proc10(sMsg: String);
  end;

..

Procedure TMyBaseClass.Assign(aNewValue:TMyBaseClass);
begin
  self.ID := aNewValue.ID; // Und damit Möglichkeit, TMyClass komplett zu überschreiben
  self.Name := aNewValue.Name;
end;
  

Procedure TMyClass.Assign(aNewValue:TMyClass);
begin
  inherited (TMyBaseClass(aNewValue));

  self.Info := aNewValue.Info;
end;
Oder geht das einfacher?

Mein Problem ist, dass TMyClass aus ca. 40 Properties besteht und noch Unter- und Überklassen bestehen. Nur Arbeit, alle Properties in Assign aufzunehemen, aber schwierig, den aktuelle zu halten wenn mehrere eventuell neue Properties hinzufügen (Selten, aber kann vorkommen)
  Mit Zitat antworten Zitat