Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi variant freigeben / nullen? (https://www.delphipraxis.net/150279-variant-freigeben-nullen.html)

Jackie1983 12. Apr 2010 12:22


variant freigeben / nullen?
 
servus,

habe einen kleinen record
Delphi-Quellcode:
  TCheckValue = record
    cvName : string;
    cvValue : variant;
  end;

  TCheckValues = array of TCheckValue;
dieser wird oft verwendet. cvValue kann ein int/string/float/time etc sein.
Kein Objekt. Muss ich den dyn. array am ende wieder "leeren" bzw. die länge wieder
auf 0 setzen um sauber zu programmieren. Einen speicherfresser gibt es ja nicht...
Delphi-Quellcode:
  for i:=Low(Acr) to High(Acr) do
    ACR[i].cvValue := 0;

  SetLength(Acr, 0);
gruß

mkinzler 12. Apr 2010 12:39

Re: variant freigeben / nullen?
 
dere Wert für leer ist null

sirius 12. Apr 2010 12:42

Re: variant freigeben / nullen?
 
Zitat:

Muss ich den dyn. array am ende wieder "leeren" bzw. die länge wieder
auf 0 setzen
Ein finalize setzt der Compiler automatisch ein. Brauchst du also nicht machen, wäre nur doppelt gemoppelt.

himitsu 12. Apr 2010 12:49

Re: variant freigeben / nullen?
 
Variants, dyn. Arrays, Interfaces und Strings werden von Delphi automatisch freigegeben ... das gilt für alle Typen, wofür Delphi auch eine automatische Initialisierung (sowie die gewünschte Finalisierung) besitzt.

Dieses auch in mehreren Ebenen von diesen genannten Typen.

Ein Variant in einem dyn. Array würde also freigegeben,
aber ein Variant in einem Pointer nicht (solange dieser Pointer nicht ordnungsgemäß manuell freigegeben wird, z.B. via Dispose oder Finalize+FreeMem)

Jackie1983 12. Apr 2010 12:53

Re: variant freigeben / nullen?
 
supi thx...


Alle Zeitangaben in WEZ +1. Es ist jetzt 20:26 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