¿Cómo declaro un tipo de variable vbscript? [duplicar]

Aug 21 2020

Lo siguiente arroja un error con o sin Option Explicitset.

Cree un archivo llamado dim.vbs.

Dim a as String

Luego, ejecute en el símbolo del sistema.

cscript dim.vbs

Error de compilación de Microsoft VBScript: fin esperado de la declaración

¿Hay alguna forma de forzar el tipo de variable con o sin un Option Explicitconjunto?

Respuestas

5 Dai Aug 21 2020 at 10:44

¿Cómo declaro un tipo de variable en vbscript?

No puedes.

  • VBScript no admite el concepto de variables de tipo estático.
  • VBScript es un lenguaje de interfaz para el entorno ActiveScripting de Windows.
    • Este entorno está alojado por cscript(para la línea de comandos) y wscript(cuando no desea que aparezca una ventana de CMD).
    • El entorno también está alojado en IIS para Classic ASP .asp/ .asay anteriormente Internet Explorer (antes de Internet Explorer 9), donde era la base de su motor JavaScript.
      • "JScript" es la marca (o dialecto) de JavaScript que también es compatible con ActiveScripting: tanto VBScript como JScript comparten similitudes en lo que son capaces de hacer.
  • ActiveScripting está diseñado para trabajar con objetos COM.

La sintaxis de VBScript es un subconjunto de VBA y en gran medida es mutuamente inteligible porque VBA escribirá implícitamente variables sin una definición de tipo estático como un Variantobjeto COM , que es aproximadamente equivalente (y posiblemente idéntico, lo olvido) al tipo subyacente real utilizado por las variables de VBScript.

(Internamente se escribe VBScript : de lo contrario, sería imposible que VBScript use COM. Puede notar que hay algo de escritura bajo el capó debido a cómo necesita usar las palabras clave Sety Letsegún el tipo esperado de un valor, o cómo solo se puede usar Consten VBScript con ciertos tipos de valor literal, y así sucesivamente).

Por analogía: tiene una licencia de conducir para un automóvil de pasajeros (sabe cómo escribir VBA) y decide conducir una carretilla elevadora (VBScript), porque sabe cómo conducir un automóvil de pasajeros y porque los controles / interfaz se ven lo mismo (tiene volante, freno de mano, asiento del conductor, velocímetro) que tus habilidades como conductor de un vehículo de pasajeros significan que deberías poder conducir una carretilla elevadora de inmediato y sin problemas. Usted no puede y no lo hará: las carretillas elevadoras se manejan de manera muy diferente (por ejemplo, la dirección de las ruedas traseras, la conducción eléctrica y muchas regiones requieren una licencia especial para los conductores de carretillas elevadoras por este motivo).

BrandonGoodman Aug 26 2020 at 08:09

A pesar de su no posible declarar variables con tipos específicos de EBV como lo haría en VB o VBA, no son varias funciones de conversión que aseguren que la variable contiene el tipo de datos que desea.

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

por ejemplo

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

produce

String
Integer
Integer

Solo tenga en cuenta que pasar valores no convertibles a una función de conversión puede causar errores de no coincidencia de tipos. Por ejemplo, una cadena como "x9x" no se puede convertir en un número, por lo que CInt ("x9x") provocará un error de tiempo de ejecución que detiene la ejecución.