AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi WMI Abfragen + Fehler wenn Rückgabewert NULL ist
Thema durchsuchen
Ansicht
Themen-Optionen

WMI Abfragen + Fehler wenn Rückgabewert NULL ist

Ein Thema von Piro · begonnen am 16. Dez 2008 · letzter Beitrag vom 17. Dez 2008
Antwort Antwort
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#1

WMI Abfragen + Fehler wenn Rückgabewert NULL ist

  Alt 16. Dez 2008, 10:00
Hi,

ich frage via WMI Computer Informationen über das Netzwerk ab. Funktioniert auch alles wunderbar. Nur beim Auslesen der netzwerkeinstellungen habe ich Probleme.

Ich lese folgendes aus:
- Adaptername
- IP
- Subnetmask
- Gateway
- DNS
- WINS
- MAC

Beim Auslesen des Gateways und der DNS Einstellungen habe ich Probleme. Beide geben ein Array zurück. Es kann vorkommen, dass es keine Rückgabewert gibt und stoße ich auf einen Fehler.

Mein Code:
Delphi-Quellcode:
...
try
  SWbemLocator1 := CoSWbemLocator.Create;
  // Für lokale Computer darf kein Benutzer und Passwort verwendet werden
  if UpperCase(edt_system.Text) <> UpperCase(GetEnvironmentVariable('COMPUTERNAME')) then
     aSrv := SWbemLocator1.ConnectServer(edt_system.Text,'root\cimv2',frm_main.edt_user.Text, frm_main.edt_password.Text,'','',0,vNVS)
   else
     aSrv := SWbemLocator1.ConnectServer(edt_system.Text,'root\cimv2','','','','',0,vNVS);

  //*** Network Information ***
  Counter := 0;
  aObjSet := aSrv.ExecQuery('Select * from Win32_NetworkAdapterConfiguration where IPEnabled = true','WQL', 0, aNVSDummy);
  pEnum := aObjSet.Get__NewEnum as IEnumVARIANT;
  while (TRUE) do
  begin
     hRes := pEnum.Next(1, vOut, dwRetrieved);
     if hRes <> S_OK then
       Break;

     TempArray := vOut.IPAddress;
     if (TempArray[0] <> '0.0.0.0') and (TempArray[0] <> '') then
     begin
       DNS := '';

       ANetwork[Counter].gw := VarToStr(vOut.DefaultIPGateway[0]); // ---> hier kommt der Fehler wenn kein Wert vorhanden ist

       TempArray := vOut.DNSServerSearchOrder; // ---> hier kommt der Fehler wenn kein Wert vorhanden ist
       for i := 0 to Length(TempArray) - 1 do
       begin
         if i = 0 then
           DNS := vOut.DNSServerSearchOrder[i]
         else
           DNS := DNS + ', ' + vOut.DNSServerSearchOrder[i];
       end;
       ANetwork[Counter].dns := DNS;

       Inc(Counter);
     end;
   end;
...
Ich habe es mit folgender Abfrage versucht aber es hat auch nicht funktioniert. Beispielhaft für das Gateway.
Delphi-Quellcode:
 if vOut.DefaultIPGateway <> NULL then
   ANetwork[Counter].gw := VarToStr(vOut.DefaultIPGateway[0])
 else
   ANetwork[Counter].gw := '';
Wenn DefaultIPGateway jetzt keinen Wert hat, funktioniert es. Sollte aber ein Wert kommen, läuft die IF Abfrage auf einen Fehler.

Wie kann ich prüfen, ob ein Wert kommt oder nicht in Abhängigkeit des Rückgabewertes?

Ich bin für jede Hilfestellung dankbar. Denn ich verzweifel langsam.

Gruß, Sven
Miniaturansicht angehängter Grafiken
fehler_222.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#2

Re: WMI Abfragen + Fehler wenn Rückgabewert NULL ist

  Alt 17. Dez 2008, 10:14
Hat denn keiner eine Idee.

Gruß, Sven
  Mit Zitat antworten Zitat
Benutzerbild von Piro
Piro

Registriert seit: 14. Jul 2003
Ort: Flintbek
810 Beiträge
 
Delphi XE2 Professional
 
#3

Re: WMI Abfragen + Fehler wenn Rückgabewert NULL ist

  Alt 17. Dez 2008, 11:05
Ich schließe diesen Beitrag, da das Problem kein WMI-Fehler ist sondern ein anderes. Ich erstelle einen neuen Beitrag.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:05 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