Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Wie gibt man CoSWbemLocator wieder frei? (https://www.delphipraxis.net/138552-wie-gibt-man-coswbemlocator-wieder-frei.html)

Jackie1983 12. Aug 2009 13:13


Wie gibt man CoSWbemLocator wieder frei?
 
Servus,

in einer Funktion werden ein paar Objekte erstellt.
Delphi-Quellcode:
var
  Locator: ISWbemLocator;
  Services: ISWbemServices;
  SObject: ISWbemObject;
  ObjSet:  ISWbemObjectSet;
  SProp:   ISWbemProperty;
  SPropSet: ISWbemPropertySet;
begin
    Locator := CoSWbemLocator.Create;
    Services := Locator.ConnectServer...
    ObjSet := Services.ExecQuery...
    Enum := (ObjSet._NewEnum) as IEnumVariant;
...
wie kann ich die Variablen wieder freigeben?
Versucht habe ich schon
Delphi-Quellcode:
  CoSWbemLocator(Locator).Free; // <- fehler
  Locator._Release; // <- fehler
gruß

Bernhard Geyer 12. Aug 2009 13:23

Re: Wie gibt man CoSWbemLocator wieder frei?
 
Einfach mit
Delphi-Quellcode:
Locator := nil
bzw. wird automatisch von Delphi gemacht wenn die gültigkeit der Inteface-Zeigers verlassen wird. Nennt sich automatische Referenzzählung von Delphi.

Nur bei schlecht programmierten Komponenten (wie den Internet Explorer) ist es des öfteren nötig _Release direkt auf zu rufen um die Fehler der Komponenten bezüglich Speicherfreigabe zu beheben.


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:52 Uhr.

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz