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..