![]() |
Speicherproblem bei TCombobox.Items
Moin,
ich hab mein Programm mit FastMM4 mal auf Speicherlecks untersucht und viele bereits abgeschafft. Eins allerdings schaffe ich nicht abzuschaffen. Zweck der folgenden Codezeilen: Ich habe eine ComboBox, deren Inhalt (Items) aus einer Datenbank gefüllt werden soll.. In der Formular-Unit:
Delphi-Quellcode:
In der Hilfsunit:
cbOrt.Items := fillStrings(ADOQuery,'teOrte','ortBeschreibung');
Delphi-Quellcode:
Pro Aufruf von fillStrings sind nach Schließen des Formulars nun noch 1x TStringList nicht freigegeben. Ich habe schon mehrere Sachen probiert (items.free vor fillStrings, items.free in FormDestroy,..) , nur keine davon half bisher.
function fillStrings(var ADOQuery: TADOQuery; tabName: string; fieldName: string) : TStringList;
var list : TStringList; begin ADOQuery.SQL.Clear; ADOQuery.SQL.Append('SELECT '+fieldName+' FROM '+tabName); ADOQuery.Open; list := TStringList.create; list.Clear; while not ADOQuery.Eof do begin list.Append(ADOQuery.Recordset.Fields.Item[fieldName].Value); ADOQuery.Next; end; fillStrings := list; ADOQuery.Close; end; Wer hat eine Idee, wie ich das gelöst bekomme? Danke.. |
Re: Speicherproblem bei TCombobox.Items
Ich würde die Liste als Parameter übergeben
|
Re: Speicherproblem bei TCombobox.Items
Versuch das mal so:
Delphi-Quellcode:
Als sItems übergibst Du nun ComboBox.Items.
procedure fillStrings(var ADOQuery: TADOQuery; tabName: string; fieldName: string; const sItems: TStrings);
begin ADOQuery.SQL.Clear; ADOQuery.SQL.Append('SELECT '+fieldName+' FROM '+tabName); ADOQuery.Open; sItems.BeginUpdate; try sItems.Clear; while not ADOQuery.Eof do begin sItems.Append(ADOQuery.Recordset.Fields.Item[fieldName].Value); ADOQuery.Next; end; ADOQuery.Close; finally sItems.EndUpdate; end; end; [edit] Markus, 2 Doofe, ein Gedanke :zwinker: [/edit] |
Re: Speicherproblem bei TCombobox.Items
Ok, danke, so funktioniert es..
Das mit const beim Parameter fehlte mir, mit var meckerte er rum.. da muss ich wohl nochmal n bisschen was nachholen an Wissen :roll: Danke |
Alle Zeitangaben in WEZ +1. Es ist jetzt 03:28 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