Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Probleme mit WMI Informationen (https://www.delphipraxis.net/47030-probleme-mit-wmi-informationen.html)

Wenski 5. Jun 2005 13:49


Probleme mit WMI Informationen
 
Hallo,

ich hab folgendes Beispiel mehr oder weniger so nachgebaut http://www.delphipraxis.net/internal...&highlight=wmi
geht auch alles soweit nur tritt beim abrufen bestimmter Informationen folgende Fehler auf :
---------------------------
Benachrichtigung über Debugger-Exception
---------------------------
Im Projekt Project1.exe ist eine Exception der Klasse EVariantTypeCastError aufgetreten. Meldung: 'Variante des Typs (Null) konnte nicht in Typ (String) konvertiert werden'. Prozess wurde angehalten. Mit Einzelne Anweisung oder Start fortsetzen.
---------------------------
OK Hilfe
---------------------------

Dazu gibts dann folgenden Code Schnippsel
Delphi-Quellcode:
          WMIProperty:=PropertySet.Item('Speed',0);
    IF not VarisNull(WMIProperty) and (WMIProperty<>nil) then
       Specs.Values['NetworkAdapter'+Inttostr(i)+'.Speed']:=WmiProperty.Get_Value;
Meine Frage ist nun kann man den Fehler irgendwie anders abfangen, von ner Unmenge Try Excepts abgesehen ? Die beiden Bedingungen in der If Abfrage nutzen nämlich gar nix :(

freue mich über produktive Beiträge :)

mfG Wenski

Phoenix 5. Jun 2005 14:02

Re: Probleme mit WMI Informationen
 
Dein If war schon sehr nah dran:
Delphi-Quellcode:
IF not VarisNull(WMIProperty) and (WMIProperty<>nil) then
   Specs.Values['NetworkAdapter'+Inttostr(i)+'.Speed']:=WmiProperty.Get_Value;
Korrekt ist:
Delphi-Quellcode:
if not VarIsNull(WmiProperty.Get_Value) then
   Specs.Values['NetworkAdapter'+Inttostr(i)+'.Speed']:=WmiProperty.Get_Value;
Edit Nachtrag:
Das Problem ist ja, das nicht das Property selber NULL ist, sondern 'nur' der Wert des Propertys.

Wenski 5. Jun 2005 14:08

Re: Probleme mit WMI Informationen
 
Argh ... :wall:

Immer ärgerlich wenn man sowas nich sieht obwohls eigentlich auf der Hand liegt :oops:

danke schön :mrgreen:

Wenski 18. Jun 2005 15:06

Re: Probleme mit WMI Informationen
 
hm kay das funzt jetzt alles soweit wie ich mir das wünsche, hab nur ein Problem...
unter win2k funktioniert meine anmelde procedure nich so wirklich bzw ein spezieller teil geht nicht... kann mir einer verraten warum ?

Delphi-Quellcode:
const WMI_System_NameSpace='root\CIMV2'

  try
    pLoc := TSWBemLocator.Create(nil);
  except
    begin
      CoUninitialize;
      Specs.Values['LastError'] := ('Failed to Create Locator Object');
      exit;
    end;
  end;
  try IF Assigned(pLoc) then
    pServ := pLoc.ConnectServer('.', WMI_System_Namespace, '', '', '', '', 128,
      nil)
      else
        begin
          CoUninitialize;
          Specs.Values['LastError']:='Locator Objekt is not assigned';
          exit;
        end;
  except
    begin
      CoUninitialize;
      Specs.Values['LastError'] :=
        ('Failed to establish NameSpaceConnection Object');
      exit;
    end;
  end;
um das ganze noch genauer einzugrenzen :
pServ := pLoc.ConnectServer('.', WMI_System_Namespace, '', '', '', '', 128, nil)
diese zeile verursachet jedesmal einen Fehler. so wer weiß es ? :)


Alle Zeitangaben in WEZ +1. Es ist jetzt 18:12 Uhr.

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