Entwickler-Ecke
Grafische Benutzeroberflächen (VCL & FireMonkey) - Komponenten freigeben funzt nicht
DJ_Apfel - Mi 11.12.02 00:56
Titel: Komponenten freigeben funzt nicht
hi,
ich hab dynamische Textfelder erstellt nun will ich sie ganz einfach mit
textfeld[i].free wieder "löschen" und somit auch den Speicher wieder freigeben.
Leider passiert da nix :(.
Quelltext
1: 2: 3:
| Wichtig: ich habe ein
textfeld: array [0..10] of TEdit |
[/code]
DJ_Apfel - Mi 11.12.02 11:27
Ok das Probelm hab ich folgendermaßen gelöst:
Schon bei der Erstellung des Objektes lag der Fehler:
Quelltext
1: 2: 3: 4:
| statt self textfeld := TEdit.Create(self); ein nil textfeld := TEdit.Create(nil); |
das Problem ist nur ich weiß nciht warum das so sein muss :P Villeich kann ja mal einer der Profs noch etwas sazu schreiben.
LCS - Mi 11.12.02 11:37
Hi
mit
Quelltext
1:
| Textfeld := TEdit.Create(nil); |
hast du einfach nochmal ein Editfeld erzeugt (allerdings ohne Owner) und der Objektvariablen zugewiesen.
----
Nachtrag: Ich hab dein Posting nicht richtig gelesen. Das hier ist also Quatsch.
-----
Quelltext
1: 2: 3: 4: 5: 6: 7: 8:
| var Textfeld : TEdit; //definition ... begin Textfeld := TEdit.Create(self); //Erzeugen mit Eigentümer ... Textfeld.Free; //Freigeben ... |
Gruss Lothar
Anonymous - Mi 11.12.02 11:39
Das mit dem Self war schon richtig. Auf diese Weise wird die Komponente in die Komponentenliste des Formulars aufgenommen. Wenn du das Programm dann beendest, dann gibt das Formular auch die Komponente von selbst frei. Sonst mußt du es selbst machen.
Ein Tip zum Free:
X.Free;
X := nil;
Kann nicht schaden und du entfernst die Adresse.
Entwickler-Ecke.de based on phpBB
Copyright 2002 - 2011 by Tino Teuber, Copyright 2011 - 2025 by Christian Stelzmann Alle Rechte vorbehalten.
Alle Beiträge stammen von dritten Personen und dürfen geltendes Recht nicht verletzen.
Entwickler-Ecke und die zugehörigen Webseiten distanzieren sich ausdrücklich von Fremdinhalten jeglicher Art!