Einzelnen Beitrag anzeigen

Benutzerbild von AirJordan
AirJordan

Registriert seit: 29. Mär 2005
Ort: Hamburg
214 Beiträge
 
Delphi 7 Enterprise
 
#1

Kann so ein Speicherleck entstehen?

  Alt 23. Jul 2006, 16:43
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.
Holger
Georg Schramm über Lothar Dombrowski:
"Er krankt daran, dass die Leute in einer
schrecklichen Welt leben und lachen..."

_
  Mit Zitat antworten Zitat