![]() |
TObj kann nicht zu TObj zugewiesen werden
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 ? :gruebel: Dieser, mein Beispielcode funktioniert nicht.
Delphi-Quellcode:
Könnte ihr mir helfen mein TObj zu kopieren?
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; Was mache ich falsch? Danke und Grüße gmc |
Re: TObj kann nicht zu TObj zugewiesen werden
Musst diu nicht entweder die Assign-Methode oder besser noch die AssignTo-Methode überschreiben?
Woher soll Delphi denn wissen, welche Daten du kopieren willst? |
Re: TObj kann nicht zu TObj zugewiesen werden
Ich dachte das gebe ich im Parameter von AssignTo() mit.
Schließlich möchte ich ein Objekt kopieren, dessen Struktur bekannt sein sollte. 's steht doch da, oder? Wo und wie muß ich Assign bzw. AssignTo überschreiben ? |
Re: TObj kann nicht zu TObj zugewiesen werden
Zitat:
![]() |
Alle Zeitangaben in WEZ +1. Es ist jetzt 20:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz