Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.646 Beiträge
Delphi 12 Athens
|
AW: Hilfestellung zu meinem Speicherleck
9. Mai 2011, 19:44
Du setzt sie doch vorher auf nil, wie willst Du sie denn wieder freigeben? Wie gesagt, wenn Du die Befehle umdrehst zeigt Result dann nach dem Freigeben auf eine nicht mehr existente Instanz, das ist also auch nicht die Lösung. Versuch es doch einmal so:
Delphi-Quellcode:
procedure TProcessHandler.GetAllRunningProcs(ResultList: TStrings);
// returns all currently running processes
var
s: string;
// User: string;
begin
// User := GetEnvironmentVariable('USERNAME');
if Assigned(ResultList) then
begin
ResultList.BeginUpdate;
try
ResultList.Clear;
hProcSnap := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
if (hProcSnap <> INVALID_HANDLE_VALUE) then
begin
pe32.dwSize := SizeOf(ProcessEntry32);
if (Process32First(hProcSnap, pe32)) then
begin
s := pe32.szExeFile;
// if GetUsernameByExeName(s) = User then
ResultList.Add(s);
while Process32Next(hProcSnap, pe32) do
begin
s := pe32.szExeFile;
// if GetUsernameByExeName(s) = User then
ResultList.Add(s);
end;
end;
end;
CloseHandle(hProcSnap);
finally
ResultList.EndUpdate;
end;
end;
end;
Der Prozedur übergibst Du dann einfach die zu füllende Stringliste.
Detlef "Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
Geändert von DeddyH ( 9. Mai 2011 um 19:47 Uhr)
Grund: Ein begin-end fehlte
|