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;
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;
Comment