Delphi-PRAXiS
Seite 3 von 3     123   

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Datenkopie vom einen Record in ein anderes (https://www.delphipraxis.net/183467-datenkopie-vom-einen-record-ein-anderes.html)

DeddyH 12. Jan 2015 15:42

AW: Datenkopie vom einen Record in ein anderes
 
Das gibt' s IIRC seit Delphi 2006.

Sir Rufo 12. Jan 2015 17:25

AW: Datenkopie vom einen Record in ein anderes
 
Zitat:

Zitat von bernau (Beitrag 1286345)
Zitat:

Zitat von Sir Rufo (Beitrag 1286337)
Und was willst du im Assign anders machen als die Objekt-Referenz kopieren (was die normale Zuweisung eben auch macht)

Evtl. Schauen, ob beim Zielrecord schon ein initialisiertes Objekt im Feld vorhanden ist und dann nicht einfach den Pointer überschreiben.

Warum nicht die Referenz einfach überschreiben? Der Record eignet sich doch eh nicht zur Lifetime-Verwaltung einer Objekt-Instanz. Vergisst du den Record passiert einfach nichts (gut der wird finalisiert, aber die Instanz wird nicht freigegeben).

Und dann werden die Felder eines Records nur bei einem gemanagten Typen initialisiert. Und eine Objekt-Instanz ist erst mit ARC gemanaget.
Delphi-Quellcode:
TFoo = record
  Instance : TObject; // ohne Zuweisung kann hier alles drin stehen!
  Str : string; // init mit ''
  Intf : IInterface; // init mit nil
  procedure Assign( Other : TFoo );
end;

procedure TFoo.Assign( Other : Tfoo );
begin
  if Assigned( Instance ) then
    FreeAndNil( Instance ); // das knallt wie ein Zufallsgenerator!
  Instance := Other.Instance;


Alle Zeitangaben in WEZ +1. Es ist jetzt 23:28 Uhr.
Seite 3 von 3     123   

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