Como declaro um tipo de variável vbscript? [duplicado]

Aug 21 2020

O seguinte gera um erro com ou sem Option Explicitconjunto.

Crie um arquivo chamado dim.vbs.

Dim a as String

Em seguida, execute no prompt de comando.

cscript dim.vbs

Erro de compilação do Microsoft VBScript: fim de instrução esperado

Existe uma maneira de forçar o tipo de variável com ou sem Option Explicitconjunto?

Respostas

5 Dai Aug 21 2020 at 10:44

Como declaro um tipo de variável em vbscript?

Você não pode.

  • O VBScript não oferece suporte ao conceito de variáveis ​​digitadas estaticamente.
  • VBScript é uma linguagem de front-end para o ambiente ActiveScripting do Windows.
    • Este ambiente é hospedado por cscript(para a linha de comando) e wscript(quando você não quiser que uma janela CMD apareça).
    • O ambiente também é hospedado pelo IIS para Classic ASP .asp/ .asae anteriormente pelo Internet Explorer (antes do Internet Explorer 9), onde era a base para seu mecanismo JavaScript.
      • "JScript" é a marca (ou dialeto) do JavaScript também compatível com ActiveScripting: tanto o VBScript quanto o JScript compartilham semelhanças no que são capazes.
  • ActiveScripting se destina a trabalhar com objetos COM.

A sintaxe do VBScript é um subconjunto do VBA e é amplamente mutuamente inteligível porque o VBA digitará implicitamente variáveis ​​sem uma definição de tipo estático como um Variantobjeto COM , que é aproximadamente equivalente (e possivelmente idêntico, eu esqueci) ao tipo subjacente real usado pelas variáveis ​​do VBScript.

(Internamente o VBScript é digitado: caso contrário, seria impossível para o VBScript usar COM. Você pode dizer que há alguma digitação por baixo do capô por causa de como você precisa usar as palavras Set- Letchave e com base no tipo esperado de um valor, ou como só pode ser usado Constem VBScript com certos tipos de valor literal e assim por diante).

Por analogia: você tem carteira de motorista para um carro de passageiros (você sabe escrever VBA) e você decide dirigir uma empilhadeira (VBScript) - porque você sabe como dirigir um carro de passageiros e porque os controles / interface parecem o mesmo (tem um volante, um freio de mão, um banco do motorista, um velocímetro) que suas habilidades como motorista de carro de passeio significam que você deve saber dirigir uma empilhadeira imediatamente e sem problemas. Você não pode e não vai: as empilhadeiras operam de maneira muito diferente (por exemplo, direção da roda traseira, tração elétrica e muitas regiões exigem licenciamento especializado para motoristas de empilhadeira por esse motivo).

BrandonGoodman Aug 26 2020 at 08:09

Embora a sua não possível declarar variáveis com tipos específicos em VBS como faria em VB ou VBA, não estão várias funções de conversão que irão garantir que sua variável contêm o tipo de dados que você deseja.

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

por exemplo

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

produz

String
Integer
Integer

Apenas tome cuidado, pois passar valores não convertíveis para uma função de conversão pode causar erros de incompatibilidade de tipo. Por exemplo, uma string como "x9x" não pode ser convertida em um número, então CInt ("x9x") causará um erro de tempo de execução que interrompe a execução.