![]() |
Objekte kopieren
Hallo,
folgendes:
Delphi-Quellcode:
Bei diesem Code wird anscheinend im Array Topics nur eine Referenzierung auf das Objekt Topic gespeichert. Wie kann ich eine "richtige" Kopie darin ablegen, auf die auch noch nach Topic.Free zugreifen kann?
// "Pseudo"-Delphi
var Topics: array of Topic; Topics[n] := Topic; // Topic = Prozedurparameter Topic.Free; ShowMessage(Topics[n].Caption); // <-- schutzverletzung Grüße Stefan |
Re: Objekte kopieren
Erstmal: Klassennamen sollten das auch ausdrücken; TTopic wäre da sicherlich angebrachter.
Aber zur Frage: nur Du weißt, was in einem "Topic" drin ist, daher kannst eigentlich auch nur Du wissen, was genau kopiert werden soll. Prinzipiell:
Delphi-Quellcode:
Assign musst Du dabei selber implementieren, schau mal in die Hilfe oder irgendeine RTL/VCL-Klasse dazu (unter Assign und TPersistent)...
NewTopic := TTopic.Create;
NewTopic.Assign(Topics[n]); |
Re: Objekte kopieren
Hallo,
danke für Deine Antwort. Ich habe mir mal was zurecht gebastelt, leider bekomme ich eine Schutzverletzung:
Delphi-Quellcode:
Erkennst Du einen Fheler im Code?
procedure TTopic.Assign(Source: TPersistent);
begin if Source is TTopic then begin Caption := TTopic(Source).Caption; ID := TTopic(Source).ID; end; //inherited; end; |
Re: Objekte kopieren
Ist TTopic auch ein Nachfahre von TPersistent
|
Re: Objekte kopieren
Ja, ist er!
Grüße Stefan |
Re: Objekte kopieren
Dann zeig mal ein wenig Code um den Assign() Aufruf drumherum, so wie du es jetzt gerade verwendest.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:10 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