Einzelnen Beitrag anzeigen

sonicus83

Registriert seit: 4. Aug 2008
33 Beiträge
 
#1

Speicherproblem bei TCombobox.Items

  Alt 7. Aug 2008, 12:58
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:

cbOrt.Items := fillStrings(ADOQuery,'teOrte','ortBeschreibung'); In der Hilfsunit:

Delphi-Quellcode:
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;
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.

Wer hat eine Idee, wie ich das gelöst bekomme? Danke..
  Mit Zitat antworten Zitat