Einzelnen Beitrag anzeigen

Benutzerbild von jaenicke
jaenicke

Registriert seit: 10. Jun 2003
Ort: Berlin
9.580 Beiträge
 
Delphi 11 Alexandria
 
#5

AW: Preview Handler in VCL erzeugt MemoryLeak - Lösung gesucht

  Alt 16. Feb 2014, 17:24
Er hat den Quelltext doch verlinkt...

Das passiert auch mit der Demo schon. Aber ist wohl zu viel verlangt das auszuprobieren.

In dem Quelltext sind leider zwei gravierende Fehler drin. Der wichtigste ist, dass der TFileStream freigegeben wird, obwohl der TStreamAdapter mit soOwned erzeugt wird. Dadurch gibt es einen Fehler beim Freigeben (logisch) und daher rührt das Speicherleck.

Der zweite wichtige Fehler ist, dass dort der Registry-Schlüssel mit LRegistry.OpenKey(LKey, True); frecherweise einfach erzeugt wird, statt ihn nur zu versuchen zu öffnen und den Rückgabewert auszuwerten.
Richtig daher:
Delphi-Quellcode:
    if LRegistry.OpenKey(LKey, False) then
    begin
      Result := LRegistry.ReadString('');
      LRegistry.CloseKey;
    end
    else
      Result := '';
Sebastian Jänicke
Alle eigenen Projekte sind eingestellt, ebenso meine Homepage, Downloadlinks usw. im Forum bleiben aktiv!
  Mit Zitat antworten Zitat