Hallo,
ich habe mal eine kleine Frage ob mit meinem Beispielcode ein Speicherleck entstehen kann,
weil eine TStringList nicht korrekt aus dem Speicher geräumt wird.
Folgende Funktion wurde definiert:
Delphi-Quellcode:
function TbvshOfficeHauptformular.GetVereineEmail: TStringList;
var iVereinsStr, iVereinsFuktionaer:
String;
begin
Result := TStringList.Create;
try
[..]
SQL Abfrage auf die Datenbank
[..]
while not dmBVSH.sqlBVSHVereine.Eof
do
begin
with [..]
SQL Abfrage [..]
do
begin
iVereinsStr := [..]
String wird erstellt [..]
Result.Add(iVereinsStr);
Next;
end;
end;
end;
und die Funktion wird nun in der Procedure die ausgelöst wird, wenn der
Schalter im Programm gedrückt wird.
Delphi-Quellcode:
procedure TbvshOfficeHauptformular.dxBVSHNavBarGruppeUpdateVereineExportThunderbirdClick(Sender: TObject);
var slVereinsDaten: TStringList;
procedure CreateVereineExportThunderbird;
begin
slVereinsDaten := GetVereineEmail;
try
slVereinsDaten.SaveToFile('.\Export\BVSHEmails.CSV'); //Datei speichern
finally
slVereinsDaten.Free; //Objekt wieder freigeben
end;
MessageDlg('>HinweisText<', mtInformation, [mbOK], 0);
end;
begin
if bvshSicherheit then
begin
if MessageDlg('>HinweisText<', mtConfirmation,[mbNo, mbYes], 0) = mrYes then CreateVereineExportThunderbird;
end else CreateVereineExportThunderbird;
end;
Wird die StringList, die in der Procedure über die Funktion erstellt wird, auch korrekt freigegeben?
Danke für eure Hinweise.