Page 1 sur 1

[..] erreur avec ObjCreate

Posté : jeu. 06 janv. 2011 15:57
par Rapace15
Bonjour à tous,

Mon service gère un parc de 500 micros sous XP. J'ai créé un IconTray pour pousser une boite à raccourcis aux utilisateurs du réseau. Cela fonctionne très bien, mais je me retrouve avec une erreur bizarre sur certains postes (cf ci desous).
Ici le message d'erreur sur fichier compilé
Ici le message d'erreur sur fichier compilé
err_sumitray.JPG (8.3 Kio) Vu 1440 fois
En recherchant le bug, je me suis aperçu que j'ai une erreur systématiquement lorsque j'utilise la commande suivante (ligne dans la boucle FOR) :

Code : Tout sélectionner

Variable globale de stockage des commandes
Global $commands = ObjCreate("Scripting.Dictionary")

for $id=1 to 5
    [b]$commands.item($id) = "Commande " & $id[/b]
Next
 
Cette syntaxe fonctionne sur de nombreux postes, mais j'ai des plantage systématiquement sur une dizaine de poste.
Quelqu'un aurait-il une piste SVP ?

Re: [..] erreur avec ObjCreate

Posté : jeu. 06 janv. 2011 19:50
par zeshrek
Hmmm... si ton $command.item correspond a un tableau, il faut des crochets pas des parentheses.
Sinon, il faut voir a quoi correspondent ces items du $commands

Re: [..] erreur avec ObjCreate

Posté : jeu. 06 janv. 2011 22:19
par Tlem
D'après les éléments donnés, la conclusion qui s'impose est que Global $commands = ObjCreate("Scripting.Dictionary") n'a pas fonctionné (environnement non disponible peut être) et donc $commands n'est pas un objet.
Donc forcément, la suite ne peut pas fonctionner. :roll:
Essayez de rajouter ceci avant la boucle For :

Code : Tout sélectionner

If Not IsObj ($commands) Then
     MsgBox(0, "Erreur", "$commands n'est pas un objet")
     Exit
EndIf

Re: [..] erreur avec ObjCreate

Posté : ven. 07 janv. 2011 10:03
par Rapace15
Merci de vos réponses.
En fait pour faire mon tray, je me suis servi de ce post (sans trop rien comprendre au début)...
Tlem a écrit :D'après les éléments donnés, la conclusion qui s'impose est que Global $commands = ObjCreate("Scripting.Dictionary") n'a pas fonctionné (environnement non disponible peut être) et donc $commands n'est pas un objet.
Ta remarque penche effectivement dans le même sens que ce que je pensais. Juste quelques questions qui pourraient m'aider à comprendre un peu plus cette panne :
faut-il des dll particuliers pour utiliser cette commande ?
Pourquoi cela fonctionne-t-il sur la plupart de mes postes ?

En fait comme c'est indiqué sur le post d'origine, je souhaitais éviter les tableaux qui me semblaient un peu "hard" à gérer puisque au départ je n'en connais pas la dimension. Mais je pense que je vais finir par le gérer comme ça si ça évite le bug. Je vous tiens au courant. Merci encore.

Re: [..] erreur avec ObjCreate

Posté : ven. 07 janv. 2011 10:33
par Rapace15
Tlem a écrit :D'après les éléments donnés, la conclusion qui s'impose est que Global $commands = ObjCreate("Scripting.Dictionary") n'a pas fonctionné (environnement non disponible peut être) et donc $commands n'est pas un objet.
Donc forcément, la suite ne peut pas fonctionner. :roll:
Essayez de rajouter ceci avant la boucle For :

Code : Tout sélectionner

If Not IsObj ($commands) Then
     MsgBox(0, "Erreur", "$commands n'est pas un objet")
     Exit
EndIf
Je confirme, je passe bien par la gestion d'erreur et la box s'affiche.
Je vais donc essayer de passer par des array.

Toutefois, si quelqu'un pouvait m'expliquer pourquoi ça plante (faut-il rajouter une dll ?), je suis preneur. J'attends donc un petit peu pour marquer ce sujet comme résolu :wink:

Re: [..] erreur avec ObjCreate

Posté : ven. 07 janv. 2011 12:51
par Tlem
A première vue, c'est un problème avec COM => http://www.microsoft.com/com/default.mspx

Donc là comme ca je sais pas trop, mais peut être manque t-il un élément indispensable à l'utilisation correcte de COM. :roll:
Il faut voir si d'autres commandes COM fonctionne.

Essayez d'installer/Mettre à jour le .NET Framework. :wink: