unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 =
class(TForm)
Button1: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private-Deklarationen }
public
{ Public-Deklarationen }
end;
TKlasse1 =
class(TPersistent)
public
X, Y : Integer;
procedure Assign(Source: TPersistent);
override;
end;
TKlasse2 =
class(TKlasse1)
public
Text :
String;
procedure Assign(Source: TPersistent);
override;
end;
TKlasse3 =
class(TKlasse2)
public
Z : Integer;
procedure Assign(Source: TPersistent);
override;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button1Click(Sender: TObject);
var
K1 : TKlasse1;
K3 : TKlasse3;
begin
K1 := TKlasse1.Create;
K3 := TKlasse3.Create;
K3.X := 5778;
K3.Y := 135;
K3.Z := 9788;
K3.Text := '
Bla';
K1.Assign(K3);
MessageDlg(Format('
X = %d Y=%d', [K1.X, K1.Y]), mtWarning, [mbOK], 0);
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
end;
{ TKlasse1 }
procedure TKlasse1.Assign(Source: TPersistent);
begin
if Source
is TKlasse1
then
begin
X := TKlasse1(Source).X;
Y := TKlasse1(Source).Y;
// hier kein inherited
end
else
inherited;
end;
{ TKlasse2 }
procedure TKlasse2.Assign(Source: TPersistent);
begin
if Source
is TKlasse2
then
begin
Text := TKlasse2(Source).Text;
inherited;
end
else
inherited;
end;
{ TKlasse3 }
procedure TKlasse3.Assign(Source: TPersistent);
begin
if Source
is TKlasse3
then
begin
Z := TKlasse3(Source).Z;
inherited;
end
else
inherited;
end;
end.