ein assign kopiert eigentlich nur die Eigenschaften. Wenn du willst das dein Object auch ein neues Object erstellen kann dann müsste es eine funktion haben die ein neues Object zurück liefert.
Delphi-Quellcode:
type
TKante = class(TObject)
public
x1,x2: TPoint;
function CreateCopy: TKante;
procedure Assign(ASource: TKante);
end;
[...]
function TKante.CreateCopy: TKante;
begin
result := TKante.Create;
result.Assign(Self);
end;
procedure TKante.Assign(ASource: TKante);
begin
x1 := ASource.x1;
x2 := ASource.x2;
end;
denk aber dran das kopierte(neu erstellte) Object auch wieder frei zu geben.