> Tech > Caractères spéciaux et réservés

Caractères spéciaux et réservés

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

Les caractères spéciaux et les caractères réservés peuvent aussi causer des problèmes dans le code VBScript. D’une manière générale, les caractères spéciaux sont ceux qui ne sont ni alphabétiques ni numériques. Ainsi, l’astérisque (*), le point d’interrogation (?), tabulation, la parenthèse angulaire gauche (<) et la parenthèse angulaire droite (>)

Caractères spéciaux et réservés

sont tous des caractères spéciaux. Certains caractères spéciaux, comme la tabulation, ne sont pas imprimables. D’autres sont réservés à des rôles bien précis. Selon ce qu’accomplit votre code, les caractères réservés seront différents. Ainsi, avec des expressions régulières VBScript, il y a beaucoup de caractères réservés – appelés métacaractères. Ils incluent

$ ( ) * + . [ ] ? \ / ^ { } |

Si vous utilisez des tags XML dans le code VBScript, intéressez- vous aux caractères réservés suivants

& ‘ < > "

Le plus souvent, vous pouvez utiliser des caractères réservés dans le code, mais il faut les faire « échapper » avec le caractère d’échappement approprié. Ainsi, supposons que vous vouliez utiliser une expression régulière chargée de repérer les signes dollars ($) dans le texte. Comme $ est le métacaractère qui dit à l’objet RegExp de VBScript de correspondre à la fin d’une chaîne d’entrée, il faut le faire échapper avec une barre oblique inverse (\) comme dans l’exemple de code suivant

Option Explicit
Dim ObjRegExp
Set objRegexp = _ CreateObject("VBScript.RegExp")
objRegExp.Pattern = "\$"

Pour les tags XML, on peut remplacer le caractère réservé par la séquence d’échappement appropriée. Par exemple, on peut remplacer < par la séquence &lt; et remplacer > par la séquence &gt; Autre source de problème, les significations des caractères réservés ne sont pas universelles. On en voit un bon exemple dans l’article Microsoft « Hey, Scripting Guy! How Can I Connect to a Folder When There’s an Apostrophe in the Folder Name? » (« Et, le gars du scripting! Comment puisje me connecter à un dossier quand le nom de celui-ci contient une apostrophe ? »).

Le gars du scripting écrit, « Ah, l’apostrophe (aussi appelée guillemet simple). C’est un simple petit caractère insignifiant qui a probablement causé aux auteurs de scripts plus de soucis que tout autre caractère du clavier. (Oui, même plus que la tilde ~). Le problème est que l’apostrophe est un caractère réservé dans VBScript et dans WMI. Autrement dit, ces techniques de scripting veulent se réserver l’usage de l’apostrophe. Fort bien, face à des noms de dossiers comme le dossier de Ken Myer ou des patronymes comme O’Donnell ou O’Hara. Il faut bien utiliser l’apostrophe puisqu’il n’y a pas d’autre moyen d’écrire le nom. Le dossier de Ken Myer (Ken Meyer’s Folder) ? Or, VBScript et WMI veulent l’usage exclusif de l’apostrophe pour d’autres raisons. D’où les difficultés. »

Comme le gars du scripting le mentionne, il existe un moyen de résoudre ce problème en faisant échapper l’apostrophe. Dans une requête de WQL, par exemple, on fait cela en plaçant une barre oblique inverse devant l’apostrophe. Le gars du scripting donne d’autres conseils utiles et donc l’article vaut vraiment la peine d’être lu. L’un des moyens de trouver les caractères réservés passe par l’utilisation des fonctions Escape et Unescape. Bien que ces fonctions ne soient pas documentées dans le fichier d’aide WS 5.6, elles figurent dans la documentation sur le site Web Microsoft Developer Network (MSDN) . Microsoft a conçu les fonctions Escape et Unescape pour rendre visibles les caractères spéciaux dans les URL. Mais on peut utiliser la fonction Escape pour déboguer des fichiers VBScript susceptibles de contenir des caractères spéciaux. La fonction Escape fonctionne en analysant une chaîne un caractère à la fois.

Quand la fonction rencontre un caractère spécial, elle le remplace par un signe pourcent (%) et par le nombre hexadécimal du caractère remplacé. Par exemple, si l’on exécute le code

Option Explicit
Dim objShell
Set objShell = _ CreateObject("VBScript.Shell")
VBScript.Echo Escape("That darn cat!")

on obtient les resultats de la figure 1. Ils montrent que l’espace (code d’échappement %20) et le point d’exclamation (%21) sont des caractères spéciaux. Enfin, il faut savoir que VBScript a aussi des mots réservés. Pour en consulter la liste, voir l’article Microsoft.

Téléchargez cette ressource

Guide inmac wstore pour l’équipement IT de l’entreprise

Guide inmac wstore pour l’équipement IT de l’entreprise

Découvrez toutes nos actualités à travers des interviews, avis, conseils d'experts, témoignages clients, ainsi que les dernières tendances et solutions IT autour de nos 4 univers produits : Poste de travail, Affichage et Collaboration, Impression et Infrastructure.

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