Einzelnen Beitrag anzeigen

gmc616

Registriert seit: 25. Jun 2004
Ort: Jena
627 Beiträge
 
Delphi 10.3 Rio
 
#1

TObj kann nicht zu TObj zugewiesen werden

  Alt 13. Nov 2008, 14:33
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
  Mit Zitat antworten Zitat