> Tech > Option Explicit

Option Explicit

Tech - Par Renaud ROSSET - Publié le 24 juin 2010
email

L’instruction Option Explicit intercepte non seulement les variables non déclarées mais aussi les chaînes non mises entre guillemets. Ainsi, le code

Option Explicit
Dim strComputer
strComputer = PC1

entraîne un message d’erreur Variable is

Option Explicit

undefined parce que le moteur de scripting interprète PC1 comme une variable et non comme une chaîne, du fait de l’absence de guillemets. Si vous omettez l’instruction Option Explicit dans le code précédent, ce qui donne

Dim strComputer
strComputer = PC1
WScript.Echo strComputer

il n’y a pas d’erreur. Le moteur de scripting suppose dans ce cas l’existence de deux variables : strComputer et PC1. Et donc, au lieu de considérer le signe égal (=) comme un opérateur d’assignation, et donc d’assigner la valeur de PC1 à la variable strComputer, le moteur de scripting lit = comme l’opérateur égal à et rend la variable strComputer égale à la variable PC1.

Les variables peuvent poser d’autres problèmes. Avezvous déjà reçu un message d’erreur Type mismatch ou Name redefined ? Voyons ce qui cause ces erreurs liées aux variables et quelques autres. Expected end of statement (1025). Quand un nom de variable contient un point imbriqué, vous recevez le message Expected end of statement. Ce message d’erreur peut aussi résulter d’autres erreurs, comme l’utilisation involontaire d’une virgule au lieu d’un point dans un nom d’objet. Type mismatch (13). Si vous essayez d’effectuer une opération en utilisant des variables dont le contenu n’est pas approprié pour cette opération, vous recevez le message d’erreur Type mismatch. Ainsi, le code

Option explicit
Dim A, B, C, D
A = 25
B = 105
C = "Combined weight: "
D = A + C
VBScript.Echo C & D

produit le message d’erreur Type mismatch parce qu’il essaie d’ajouter une chaîne à un nombre.

Dans son article « Quick Scripting Tips », Christa Anderson vous recommande de « nommer les variables d’après le genre de données qu’elles représentent (par exemple, donner des noms de chaînes qui commencent par la lettre c et des noms d’objets qui commencent par un o). Cette pratique facilite le débogage du code. Certaines expressions ne fonctionneront pas ou fonctionneront de manière différente avec des données d’un type inattendu. Et si vous savez quel type de données vous avez l’intention de fournir à un script, il est plus facile de démêler les erreurs de discordance de type ». La section VBScript Coging Conventions dans le fichier d’aide Windows Script (WS) 5.6 (script56.chm) contient une liste de préfixes recommandés pour des variables. Ainsi, si vous ajoutez les préfixes recommandés au code précédent pour obtenir

Option Explicit
Dim intA, intB, strC, intD
intA = 25
intB = 105
intC = "Combined weight: "
intD = intA + strC
VBScript.Echo strC & intD

il est probable que vous constaterez immédiatement l’erreur et que vous remplacerez strC par IntB dans la sixième ligne. Name redefined (1041). Le message d’erreur Name redefined indique qu’un nom de variable n’est pas unique. Le plus simple pour éviter cette erreur est d’utiliser des noms de variables significatifs. Par exemple, au lieu de intA, intB et strC et intD, il vaut mieux choisir les noms intMiniesWeight, IntBrutusWeight, strLabel et IntBothDogsWeight, respectivement. Cette liste de messages d’erreur n’est nullement exhaustive.

Il est probable que vous en rencontrerez beaucoup d’autres types. L’encadré « Autres ressources » recense plusieurs ressources qui traitent des messages d’erreur de scripting courants.

Téléchargez cette ressource

Comment sécuriser une PME avec l’approche par les risques ?

Comment sécuriser une PME avec l’approche par les risques ?

Disposant de moyens financiers et humains contraints, les PME éprouvent des difficultés à mettre en place une véritable stratégie de cybersécurité. Opérateur de services et d’infrastructures, Naitways leur propose une approche pragmatique de sécurité « by design » en priorisant les risques auxquelles elles sont confrontées.

Tech - Par Renaud ROSSET - Publié le 24 juin 2010