3
私の最初のオブジェクトはTGoodFairy
(TObject)であり、それ自身の子供FChildren
(TList)があります。 Assign
プロシージャは、TGoodFairyとその子のコピーを作成します。与えられたインスタンスのコンストラクタを呼び出す方法は?
第2のオブジェクトは、TGoodFairyの子孫であるTBadFairy
です。
TBadFairyの子を作成するためにTBadFairyのAssignメソッドを使用する方法を苦労しています。
type
TFairy = class(TObject)
private
FChildren: TObjectList;
FName: string;
public
constructor Create; virtual;
destructor Destroy; override;
procedure Assign(Source: TFairy); virtual;
published
property Name: string read FName write FName;
end;
TFairyClass = class of TFairy;
TGoodFairy = class(TFairy)
end;
TBadFairy = class(TFairy)
end;
constructor TFairy.Create;
begin
inherited;
FChildren := TObjectList.Create(True);
end;
destructor TFairy.Destroy;
begin
FChildren.Free;
inherited;
end;
procedure TFairy.Assign(Source: TFairy);
var
i: integer;
f, child: TFairy;
begin
FName := Source.Name;
FChildren.Clear;
for i := 0 to Source.FChildren.Count-1 do
begin
child := TFairy(Source.FChildren[i]);
f := TFairyClass(child.ClassType).Create;
try
f.Assign(child);
FChildren.Add(f);
except
f.Free;
raise;
end;
end;
end;
「である:私はもっとこのような何かを試してみてください
– MartynAあなたは正しいです...修正された... thanx ... – lyborko