Dann drehen wir das Um:
Delphi-Quellcode:
type
TMyClass1 = class(TPersistent)
public
Nr : Integer;
NachName : string;
Vorname : string;
Telnr : string;
procedure AssignTo(Dest: TPersistent); override;
end;
TmyClass2 = Class(TMyClass1)
public
PLZ : string;
FremdNr : Integer;
procedure AssignTo(Dest: TPersistent); override;
end;
implementation
{ TMyClass1 }
procedure TMyClass1.AssignTo(Dest: TPersistent);
begin
// inherited; Nicht da ja TPersistent.AssignTo anscheinend nen Error wirft...
if Dest is TMyClass1 then begin
TMyClass1(Dest).Nr := self.Nr
TMyClass1(Dest).NachName := self.NachName;
TMyClass1(Dest).Vorname := self.Vorname;
TMyClass1(Dest).Telnr := self.Telnr;
end;
end;
{ TMyClass2 }
procedure TMyClass2.AssignTo(Dest: TPersistent);
begin
inherited;
if Dest is TMyClass2 then begin
TMyClass2(Dest).PLZ := self.PLZ;
TMyClass2(Dest).FremdNr := self.FremdNr
end;
end;
Statt Assign zu Überschreiben, nehmen wir halt AssignTo...
Wobei MyClass2.Assign(AMyClass2) sehr wohl alle Daten (PLZ/FremdNr aus TMyClass2 und Nr/NachName/Vorname/Telnr aus TMyClass1) von AMyClass2 nach MyClass2 kopiert hätte...
Und MyClass1.Assign(AMyClass2) würde nur Nr/NachName/Vorname/Telnr kopieren, jedoch PLZ/FremdNr aus TMyClass2 ignorieren..