AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Sprachen und Entwicklungsumgebungen Object-Pascal / Delphi-Language Delphi TObj kann nicht zu TObj zugewiesen werden
Thema durchsuchen
Ansicht
Themen-Optionen

TObj kann nicht zu TObj zugewiesen werden

Ein Thema von gmc616 · begonnen am 13. Nov 2008 · letzter Beitrag vom 13. Nov 2008
Antwort Antwort
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
Benutzerbild von jfheins
jfheins

Registriert seit: 10. Jun 2004
Ort: Garching (TUM)
4.579 Beiträge
 
#2

Re: TObj kann nicht zu TObj zugewiesen werden

  Alt 13. Nov 2008, 14:36
Musst diu nicht entweder die Assign-Methode oder besser noch die AssignTo-Methode überschreiben?

Woher soll Delphi denn wissen, welche Daten du kopieren willst?
  Mit Zitat antworten Zitat
gmc616

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

Re: TObj kann nicht zu TObj zugewiesen werden

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

Registriert seit: 14. Apr 2008
3.004 Beiträge
 
Delphi 2009 Professional
 
#4

Re: TObj kann nicht zu TObj zugewiesen werden

  Alt 13. Nov 2008, 16:43
Zitat von gmc616:
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 ?
Schritt für Schritt erklärt (Englisch):

http://www.mail-archive.com/delphi@d.../msg03043.html
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 15:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz