Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Löschen persistenter Felder von TDataSet zur Laufzeit (https://www.delphipraxis.net/1267-loeschen-persistenter-felder-von-tdataset-zur-laufzeit.html)

DKamps 7. Nov 2002 17:37


Löschen persistenter Felder von TDataSet zur Laufzeit
 
Wie wir alle aus dem Delphi-Kochbuch wissen, können wir persistente Felder in TDataSet nicht nur im Objektinspektor erzeugen, sondern auch zur Laufzeit:

for i := 0 to FieldDefs.Count -1 do
FieldsDef.Items[i].CreateField(self);


Leider werde ich diese dann nicht mehr los, auch die in der Hilfe beschriebene Prozedur FieldDefs.Clear oder FieldsDef.Items[i].Free hilft nicht. Zwar wird die FieldDefs-Auflistung tatsächlich gelöscht, aber wenn ich das gleiche DataSet mit einem anderen CommandText (Select * From Table) öffne, dann meckert die Laufzeit-Umgebung über fehlende Felder aus der alten Query.
Offensichtlich speichert Delphi7 irgendwo noch die Informationen über persistente TField-Instanzen.

MrSpock 10. Nov 2002 10:43

Hallo DKamps,

das hilft dir zwar zunächst nicht weiter, aber die Online Hilfe sagt zu CreateFields folgendes:

Zitat:

Ein Datenmengenobjekt ruft CreateField zur Erstellung der Feldkomponenten aus den Felddefinitionsobjekten auf. In Anwendungen wird CreateField niemals direkt aufgerufen.
Wenn du sicher sein willst, dass auch der Speicher freigegeben wird könntest du es mal mit Destroy anstatt Free versuchen. Hab ich aber nicht ausprobiert.

DKamps 11. Nov 2002 09:09

Persistente Felder selber erstellen.
 
Die richtige Lösung lautet:
Neben FieldDefs.Clear auch noch Fields.Clear aufrufen.


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