Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Objekt freigeben (https://www.delphipraxis.net/8263-objekt-freigeben.html)

Snoop007 1. Sep 2003 11:08


Objekt freigeben
 
Hi,
ich erszelle währen der laufzeit ein panel mit mehrere images.

wie kann ich nun das objekt wieder "löschen" und neu initialisieren ?

wenn ich
Code:
  if panel1 <> nil then
    Panel1.Destroy;
eingebe, erhalte ich eine execption, das gleiche mit .Free;
wenn ich nil zuweise, befindet es sich aber noch auf dem Formular, was nicht sein sollte.


mh, ich dachte das geht mit destroy

neolithos 1. Sep 2003 11:14

Re: Objekt freigeben
 
eigentlich nimmt man .Free

oder noch FreeAndNil(panel1).

Doch sollte man ein VCL-Control nur zerstören wenn man es auch selber erzeugt hat.

Generalissimo 1. Sep 2003 11:19

Re: Objekt freigeben
 
Ich hab das so gemacht:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
   p:=TPanel.Create(self);
   p.Parent:=Form1;
   p.Left:=100;
   p.Top:=100;
end;

procedure TForm1.Button2Click(Sender: TObject);
begin
  p.Destroy;
end;
P als globale Variable. Funktioniert bestens.

[edit=Daniel B]Delphi-Tags eingefügt. Mfg, Daniel B[/edit]

neolithos 1. Sep 2003 11:22

Re: Objekt freigeben
 
Liest von euch keiner die VCL-Hilfe...

Zitat:

Rufen Sie Destroy nicht direkt auf. Verwenden Sie stattdessen die Methode Free, die vor dem Aufrufen des Destruktors prüft, ob das Objekt noch im Speicher vorhanden ist.

Generalissimo 1. Sep 2003 11:24

Re: Objekt freigeben
 
ja, ok x.free ist besser. :oops:
Die Theorie ist die selbe :)

neolithos 1. Sep 2003 11:29

Re: Objekt freigeben
 
Der grund warum man das so machen sollte ist folgender...


Delphi-Quellcode:
  if l then
     obj := TSomething.Create
  else
     obj := nil;
 
  FreeAndNil(obj); // erzeugt nix Fehler, wenn obj = nil
  // nun ist obj = nil
FreeAndNil könnte man auch durch

Delphi-Quellcode:
  obj.Free;
  obj := nil;
ersetzen...

Snoop007 1. Sep 2003 22:16

Re: Objekt freigeben
 
mit FreeAndNil klarppts, danke :)


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