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 komponeten löschen (https://www.delphipraxis.net/9253-komponeten-loeschen.html)

LoL 22. Sep 2003 07:12


komponeten löschen
 
hallo zusammen

wie lösche ich eine komponete die ich zur laufzeit erzeut habe ganz und gar aus dem speicher?
mit free oder destroy oder nil oder alles zusammen und was ist der unterschied?

mfg christoph

Nalincah 22. Sep 2003 07:32

Re: komponeten löschen
 
Mit free

LoL 22. Sep 2003 07:33

Re: komponeten löschen
 
hi general

bist du sicher das das voll und ganz reicht?
wie ich eine komponeten mehrmal hintereinader gelöscht und wieder erzeugt hatte hatte kam irgendwann ein fehler

Nalincah 22. Sep 2003 07:40

Re: komponeten löschen
 
Warum willst du die mehrmals die gleiche Komponente zerstören?

Robert Marquardt 22. Sep 2003 07:43

Re: komponeten löschen
 
Du musst eine Fehler gemacht haben, wie eine Komponente zweimal freizugeben.

FreeAndNil(Komponente) ist dein Freund. Das ruft Free auf und setzt danach den Zeiger auf nil.

LoL 22. Sep 2003 07:48

Re: komponeten löschen
 
wenn ich zwischen 2 panel hin hund her schalte und die alle zur laufzeit erzeugt werden will ich sie löschen um so den speicher bedarf meins programms gering zu halten;

noch ne andere frage warum funzt das nicht:
Delphi-Quellcode:
  FreeAndNil(panel.FindComponent('panel2'));

Nalincah 22. Sep 2003 07:52

Re: komponeten löschen
 
Hast du Panel2 in Panel1 liegen oder ist beides auf Form1?

LoL 22. Sep 2003 07:53

Re: komponeten löschen
 
panel liegt auf form1 und panel2 auf panel
Zitat:

Constant object cannot be passed as var parameter

LoL 22. Sep 2003 07:57

Re: komponeten löschen
 
hi

wenn ichs aber so mache,...
Delphi-Quellcode:
var comp : TComponent;
begin
  comp := panel.FindComponent('panel2');
  FreeAndNil(comp);
end;
...dann funzt es! das kann doch nicht sein

Nalincah 22. Sep 2003 08:00

Re: komponeten löschen
 
Ich krieg immer diese Meldung:
Delphi-Quellcode:
Konstantenobjekt kann nicht als Var-Parameter weitergegeben
werden
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
panel1,panel2:TPanel;
begin
  panel1 := TPanel.Create(Form1);
  panel1.Parent := Form1;
  panel1.Width := 100;
  panel1.Height := 100;
  panel2 := TPanel.Create(Panel1);
  panel2.Parent := panel1;
  panel2.Width := 50;
  panel2.Height := 50;
  panel2.Name := 'panel2';
  FreeAndNil(panel1.FindComponent('panel2'));
end;

LoL 22. Sep 2003 08:01

Re: komponeten löschen
 
Zitat:

Zitat von General2003
Ich krieg immer diese Meldung:
Delphi-Quellcode:
Konstantenobjekt kann nicht als Var-Parameter weitergegeben
werden

genau das ist bei mir auch
aber mit ner variablen funktionierts,... warum auch immer

Nalincah 22. Sep 2003 08:02

Re: komponeten löschen
 
Sorry, aber wenn ich deswegen jetzt meinen Ausbilder frage reißt der mir den Kopf ab, weil der grad etwas busy ist. Ich guck trotzdem mal ob ich das irgendwie auf die reihe krieg.

LoL 22. Sep 2003 08:05

Re: komponeten löschen
 
@general

dazu hast du noch nen ausbilder, frag ihn halt.
und im übrigen ich versteh ja die compiler-fehlermeldung aber warum muss man für das objekt extra eine variable vom typ TComponent erstellen?

Christian Seehase 25. Sep 2003 12:08

Re: komponeten löschen
 
Moin Christoph,

Zitat:

Zitat von LoL
aber warum muss man für das objekt extra eine variable vom typ TComponent erstellen?

Weil die Funktion FreeAndNil als Parameter eine Variable erwartet. Dass muss auch so sein, da sie intern dem übergebenen Parameter nil zuweist.


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