Comment déclarer un type de variable vbscript? [dupliquer]

Aug 21 2020

Ce qui suit génère une erreur avec ou sans Option Explicitjeu.

Créez un fichier nommé dim.vbs.

Dim a as String

Ensuite, exécutez à l'invite de commande.

cscript dim.vbs

Erreur de compilation Microsoft VBScript: fin prévue de l'instruction

Existe-t-il un moyen de forcer le type de variable avec ou sans Option Explicitjeu?

Réponses

5 Dai Aug 21 2020 at 10:44

Comment déclarer un type de variable dans vbscript?

Vous ne pouvez pas.

  • VBScript ne prend pas en charge le concept de variables typées statiquement.
  • VBScript est un langage frontal pour l'environnement ActiveScripting de Windows.
    • Cet environnement est hébergé par cscript(pour la ligne de commande) et wscript(lorsque vous ne voulez pas qu'une fenêtre CMD apparaisse).
    • L'environnement est également hébergé par IIS pour ASP classique .asp/ .asa, et anciennement Internet Explorer (avant Internet Explorer 9) où il était la base de son moteur JavaScript.
      • «JScript» est la marque (ou le dialecte) de JavaScript également pris en charge par ActiveScripting: VBScript et JScript partagent des similitudes dans ce dont ils sont tous deux capables.
  • ActiveScripting est conçu pour travailler avec des objets COM.

La syntaxe de VBScript est un sous-ensemble de VBA et largement mutuellement intelligible parce que VBA typera implicitement des variables sans définition de type statique en tant Variantqu'objet COM , qui est à peu près équivalent (et peut-être identique, j'oublie) au type sous-jacent réel utilisé par les variables de VBScript.

(En interne, VBScript est tapé: sinon, il serait impossible pour VBScript d'utiliser COM. Vous pouvez voir qu'il y a une saisie sous le capot en raison de la façon dont vous devez utiliser les mots Set- Letclés et en fonction du type attendu d'une valeur, ou ne peut être utilisé Constdans VBScript qu'avec certains types de valeurs littérales, et ainsi de suite).

Par analogie: vous avez un permis de conduire pour une voiture particulière (vous savez écrire VBA) et vous décidez de conduire un chariot élévateur (VBScript) - parce que vous savez conduire une voiture particulière et parce que les commandes / l'interface ont l'air le même (il a un volant, un frein à main, un siège conducteur, un compteur de vitesse) que vos compétences en tant que conducteur de voiture de tourisme signifient que vous devriez être capable de conduire un chariot élévateur immédiatement et sans aucun problème. Vous ne pouvez pas et vous ne le ferez pas: les chariots élévateurs se comportent très différemment (par exemple, la direction des roues arrière, la propulsion électrique, et de nombreuses régions exigent une licence spécialisée pour les conducteurs de chariots élévateurs pour cette raison).

BrandonGoodman Aug 26 2020 at 08:09

Bien qu'il ne soit pas possible de déclarer des variables avec des types spécifiques dans VBS comme vous le feriez dans VB ou VBA, il existe plusieurs fonctions de conversion qui garantiront que votre variable contient le type de données que vous désirez.

CBool, CByte, CCur, CDate, CDbl, CInt, CLng, CSng, CStr

par exemple

Option Explicit
Dim x
x = "1"
WScript.Echo TypeName(x)
x = CInt("1")
WScript.Echo TypeName(x)
x = CInt(1)
WScript.Echo TypeName(x)

produit

String
Integer
Integer

Gardez simplement à l'esprit que la transmission de valeurs non convertibles dans une fonction de conversion peut entraîner des erreurs d'incompatibilité de type. Par exemple, une chaîne comme "x9x" ne peut pas être convertie en un nombre donc CInt ("x9x") provoquera une erreur d'exécution qui interrompt l'exécution.