Announcement

Collapse
No announcement yet.

Speicher wird nicht freigegeben

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • Speicher wird nicht freigegeben

    Hallo....

    ich habe eine Problem, welches ich mir absolut nicht erklären kann.
    Ich habe eine Fuktion geschrieben (siehe unten), welche intern den TopenDialog erzeugt, auf den Monitor bringt und diesen wieder frei gibt. Das Problem ist die Freigabe.

    Im schaue mir im Taskmanager (vor dem Aufruf der Funktion) die Menge Speicher an, die mein Programm belegt. Dann rufe ich die unten stehende Funktion auf. Dabei steigt die benutzte Speichermenge an. Das Problem ist: Nach "dlg.Free" wird der Speicher nicht freigegeben (zumindest zeit der Windows Taskmanager dies so an).

    Das Problem entsteht nur beim ersten Aufruf. Alle weiteren erzeugen keine weiteren Verluste.

    Ich habe einfach keine Idee woran das liegen könnte.

    System:
    -Delphi5 Enterprise
    -d5entupdate.exe
    -WIN XP mit SP 2




    function get_file(cap, root,nfilter: string; self: Tcomponent): string;
    var dlg: TopenDialog;
    LastFile: string;
    begin
    result:='';
    dlg:=TopenDialog.Create(self);
    try
    with dlg do begin
    title:=cap;
    initialdir:=root;
    filter:=nfilter;
    LastFile:=ExtractFileName(root);
    if Trim(LastFile)<>'' then filename:=LastFile;
    filterindex:=1;
    if execute then begin
    result:=filename;
    end
    else result:='';
    end;
    finally
    dlg.Free; end;
    end;

  • #2
    Durch das anzeigen des Open-Dialogs werden einige DLL's vom Windows und Internet-Explorer geladen um die Anzeige des Dialogs zu ermöglichen. Diese werden jedoch nicht mehr entladen.

    Ist also "As Designed" von Windows. Jedes Programm ob nun Delphi/VS(.NET)/... wird das gleiche Verhalten zeigen wenn die normalen Windows-API-Funktionen für den "Datei öffnen" Dialog verwendet werden.

    Comment

    Working...
    X