Einzelnen Beitrag anzeigen

HolgerX

Registriert seit: 10. Apr 2006
Ort: Leverkusen
961 Beiträge
 
Delphi 6 Professional
 
#9

AW: Daten zwischen Klassen übertragen (mit RTTI?)

  Alt 12. Okt 2016, 14:19
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..

Geändert von HolgerX (12. Okt 2016 um 14:22 Uhr)
  Mit Zitat antworten Zitat