Einzelnen Beitrag anzeigen

delphin06

Registriert seit: 18. Jun 2006
154 Beiträge
 
#10

Re: Speicher läuft voll bei WMI....

  Alt 22. Sep 2007, 15:28
Hallo

Habe auch das Problem mit der WMI.
Ich habe die WMI.pas aus der WMI Demo mit in mein Projekt eingebunden und greife darauf zu. Doch bei jedem aufruf steigt der Speicher um 20-30KB an. Wenn man da nur ein oder zweimal drauf zugreift is das ja noch ok aber ich benötige mehrere zugriffe um änderungen festzustellen. und da steigt der speicherbedarf mit der zeit enorm.
Es liegt definitiv an der WMI.pas. die demo hat das selbe problem. also wird da irgendwo der speicher nicht wieder freigegeben.

Hier mal ein Teil code von mir wie ich auf die WMI zugreife:
Delphi-Quellcode:
comp:='.';
   namespace:='root\CIMV2';
   username:='';
   pass:='';
  if vistaplus then
     query:=' SELECT Caption, Size, Partitions, SerialNumber, Signature FROM Win32_DiskDrive'
  else
    query:=' SELECT Caption, Size, Partitions, Signature FROM Win32_DiskDrive';

  if not WMIGetInfo(comp, namespace, username, pass, Trim(query), WMIResults) then //Hier ist der erste Zugriff. und dieser
    begin //verursacht schon den speicheranstieg
      wmidrives[0,0] := 'ERROR';
      wmierror:=true;
      Exit;
    end
  else
    wmierror:=false;

  wmidrives[0,0] := '';

  if WMIResults.Instance = nil then
    begin
      wmierror:=true;
      Exit;
    end
  else
    wmierror:=false;

....
Wäre super wenn da jemand nachgucken könnte der sich damit auskennt. Ich könnte mir evtl vorstellen, dass das durch
setlength() ausgelöst wird. weil das ja auch verwendet wird darin. Aber ich weiß es nicht

Hier nochmal die WMI.pas im Anhang:
Angehängte Dateien
Dateityp: pas wmi_173.pas (39,2 KB, 7x aufgerufen)
  Mit Zitat antworten Zitat