beet2che
Messages postés84Date d'inscriptionsamedi 17 mars 2007StatutMembreDernière intervention14 avril 2009
-
29 août 2008 à 15:08
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 2009
-
31 août 2008 à 03:09
bonjour
une erreur qui se déclence au niveau du code suivant :
Public
Shared
Function identifier(ByVal wmiclass AsString, ByVal wmiproperty AsString)
Dim result AsNewString("")
Dim mc As Management.ManagementClass = New ManagementClass(wmiclass)
Dim moc As Management.ManagementObjectCollection = mc.GetInstances()
Dim mo As Management.ManagementObject = New ManagementObject
For
Each mo In moc
If result = ""Then
Try
result = mo.GetPropertyValue(wmiproperty).ToString
l'erreur qui s'affiche est le suivant:
"System.nullReferenceException : la réference d'objet n'est pas définie à une instance d'objet"
l'erreur se déclenche au niveau de la ligne suivante:
result = mo.GetPropertyValue(wmiproperty).ToString
est ce que quelqu'un peut m'aide et me dire qu'est ce qui cloche?
beet2che
Messages postés84Date d'inscriptionsamedi 17 mars 2007StatutMembreDernière intervention14 avril 2009 29 août 2008 à 16:21
j'ai besoin de exit try parceque mon but est de récupérer la propriété du premier objet qui vérifie la conditon.en plus l'appel de la fonction identifier se fait comme suit :
retval = identifier("Win32_Processor", "UniqueId")
NHenry
Messages postés15112Date d'inscriptionvendredi 14 mars 2003StatutModérateurDernière intervention13 avril 2024159 29 août 2008 à 16:28
Bonjour,
Regarde alors la valeur de mo
Ensuite,
Dim mo As Management.ManagementObject = New ManagementObject
Inutile de l'initialiser, le For s'en chargera.
Puis ce n'est mas Exit Try qu'il faut utiliser, mais Exit For.
Le mieux (enfin le mieux est l'ennemi du bien) :
Return mo.GetPropertyValue(wmiproperty).ToString
Kevin.Ory
Messages postés840Date d'inscriptionmercredi 22 octobre 2003StatutMembreDernière intervention 7 janvier 200911 30 août 2008 à 02:44
Salut,
Le type de retour de ta fonction n'est pas non plus déclaré... voici comment c'est "plus mieux" (mais sans le Try) :
Public Shared Function identifier(ByVal wmiclass As String, ByVal wmiproperty As String) As String
Dim mc As Management.ManagementClass = New ManagementClass(wmiclass)
Dim moc As Management.ManagementObjectCollection = mc.GetInstances()
For Each mo As Management.ManagementObject In moc
Dim Result As String = mo.GetPropertyValue(wmiproperty).ToString
If Result <> "" Then Return Result
Next mo
End Function
Mais ça ne résout pas le problème...
mo ne peut pas être Nothing , donc le problème vient de la fonction GetPropertyValue. Je pense que la propriété wmiproperty n'existe tout simplement pas dans mo, ce qui soit génère cette erreur dans la fonction elle même, soit retourne Nothing puis l'erreur est généré par l'appel de ToString. Si l'objet mo à une fonction qui permet de tester si le nom d'une propriété existe, tu peux l'utiliser avant d'appeler GetPropertyValue. Sinon, fais le .ToString à la fin comme ceci :
Dim Result As JeNeSaisPasQuoi = mo.GetPropertyValue(wmiproperty)
If Result IsNot Nothing Then Return Result
Ca n'ajoute aucune ligne de code.
Vous n’avez pas trouvé la réponse que vous recherchez ?