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é
- 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.
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.
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

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.
Il faut voir si d'autres commandes COM fonctionne.
Essayez d'installer/Mettre à jour le .NET Framework.
