Einzelnen Beitrag anzeigen

Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.542 Beiträge
 
Delphi 11 Alexandria
 
#13

AW: Hilfestellung zu meinem Speicherleck

  Alt 9. Mai 2011, 18: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 18:47 Uhr) Grund: Ein begin-end fehlte
  Mit Zitat antworten Zitat