![]() |
Probleme mit WMI Informationen
Hallo,
ich hab folgendes Beispiel mehr oder weniger so nachgebaut ![]() 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:
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 :(
WMIProperty:=PropertySet.Item('Speed',0);
IF not VarisNull(WMIProperty) and (WMIProperty<>nil) then Specs.Values['NetworkAdapter'+Inttostr(i)+'.Speed']:=WmiProperty.Get_Value; freue mich über produktive Beiträge :) mfG Wenski |
Re: Probleme mit WMI Informationen
Dein If war schon sehr nah dran:
Delphi-Quellcode:
Korrekt ist:
IF not VarisNull(WMIProperty) and (WMIProperty<>nil) then
Specs.Values['NetworkAdapter'+Inttostr(i)+'.Speed']:=WmiProperty.Get_Value;
Delphi-Quellcode:
Edit Nachtrag:
if not VarIsNull(WmiProperty.Get_Value) then
Specs.Values['NetworkAdapter'+Inttostr(i)+'.Speed']:=WmiProperty.Get_Value; Das Problem ist ja, das nicht das Property selber NULL ist, sondern 'nur' der Wert des Propertys. |
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: |
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:
um das ganze noch genauer einzugrenzen :
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; 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 09:30 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