Hallo
DP,
ich stehe im Moment irgendwie auf dem Schlauch.
Ich habe eine Klasse mit mehreren Unterklassen und wollte dieses einfach kopieren, clonen quasi.
Das sollte doch mit Object-Pascal - also Delphi - möglich sein. Nur kriege ich es nicht hin.
Ich bekomme eine Fehlermeldung:
TObj kann nicht zu TObj zugewiesen werden.
Und wieso nicht ?
Dieser, mein Beispielcode funktioniert nicht.
Delphi-Quellcode:
type TSubObj = class(TPersistent)
private
FText: string;
procedure SetText(const Value: string);
public
property Text : string read FText write SetText;
end;
Type TObj = Class (TPersistent)
private
FSubObj: TSubObj;
FValue: Integer;
procedure SetSubObj(const Value: TSubObj);
procedure SetValue(const Value: Integer);
public
constructor Create;
destructor Destroy; override;
property Value : Integer read FValue write SetValue;
Property SubObj : TSubObj read FSubObj write SetSubObj;
end;
var
Form1: TForm1;
MyObj1 : TObj;
MyObj2 : TObj;
implementation
Procedure Doit();
begin
MyObj1 := TObj.Create;
MyObj1.Value := 12;
MyObj1.SubObj.Text := 'Mein Text';
MyObj2 := TObj.Create;
// funzt nicht
MyObj2.Assign(MyObj1); // <- EConvertError: TObj kann nicht zu TObj zugewiesen werden.
// funzt auch nicht
MyObj1.AssignTo(MyObj2); // <- EConvertError: TObj kann nicht zu TObj zugewiesen werden.
end;
{ TObj }
constructor TObj.Create;
begin
FSubObj := TSubObj.Create();
end;
destructor TObj.Destroy;
begin
FSubObj.Free;
inherited;
end;
procedure TObj.SetSubObj(const Value: TSubObj);
begin
FSubObj := Value;
end;
procedure TObj.SetValue(const Value: Integer);
begin
FValue := Value;
end;
{ TSubObj }
procedure TSubObj.SetText(const Value: string);
begin
FText := Value;
end;
Könnte ihr mir helfen mein TObj zu kopieren?
Was mache ich falsch?
Danke und Grüße
gmc