Come dichiaro un tipo di variabile vbscript? [duplicare]

Aug 21 2020

Quanto segue genera un errore con o senza Option Explicitset.

Crea un file denominato dim.vbs.

Dim a as String

Quindi esegui al prompt dei comandi.

cscript dim.vbs

Errore di compilazione di Microsoft VBScript: fine prevista dell'istruzione

C'è un modo per forzare il tipo di variabile con o senza Option Explicitset?

Risposte

5 Dai Aug 21 2020 at 10:44

Come dichiaro un tipo di variabile in vbscript?

Non puoi.

  • VBScript non supporta il concetto di variabili tipizzate staticamente.
  • VBScript è un linguaggio di frontend per l'ambiente ActiveScripting di Windows.
    • Questo ambiente è ospitato da cscript(per la riga di comando) e wscript(quando non si desidera che venga visualizzata una finestra CMD).
    • L'ambiente è anche ospitato da IIS per Classic ASP .asp/ .asae precedentemente Internet Explorer (prima di Internet Explorer 9), dove era la base per il suo motore JavaScript.
      • "JScript" è il marchio (o dialetto) di JavaScript supportato anche da ActiveScripting: sia VBScript che JScript condividono somiglianze in ciò di cui sono entrambi capaci.
  • ActiveScripting è progettato per lavorare con oggetti COM.

La sintassi di VBScript è un sottoinsieme di VBA e in gran parte mutuamente intelligibile perché VBA digiterà implicitamente le variabili senza una definizione di tipo statico come Variantoggetto COM , che è più o meno equivalente (e forse identico, dimentico) al tipo sottostante reale utilizzato dalle variabili di VBScript.

(Internamente è digitato VBScript : altrimenti sarebbe impossibile per VBScript usare COM. Puoi dire che c'è qualche digitazione sotto il cofano a causa di come devi usare le parole chiave Sete in Letbase al tipo previsto di un valore, o come tu può essere utilizzato solo Constin VBScript con determinati tipi di valore letterale e così via).

Per analogia: hai la patente di un'autovettura (sai scrivere VBA) e decidi di guidare un carrello elevatore (VBScript) - perché sai guidare un'autovettura e perché i comandi / interfaccia sembrano lo stesso (ha un volante, un freno a mano, un sedile di guida, un tachimetro) che le tue capacità di autista di autovetture significano che dovresti essere in grado di guidare un carrello elevatore immediatamente e senza problemi. Non puoi e non lo farai: i carrelli elevatori si comportano in modo molto diverso (ad es. Sterzo a ruote posteriori, trazione elettrica e molte regioni richiedono licenze speciali per i conducenti di carrelli elevatori per questo motivo).

BrandonGoodman Aug 26 2020 at 08:09

Anche se la sua non è possibile dichiarare le variabili con tipi specifici in VBS come si farebbe in VB o VBA, ci sono diverse funzioni di conversione che farà in modo che la variabile contiene il tipo di dati che si desidera.

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

per esempio

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

Basta fare attenzione che il passaggio di valori non convertibili in una funzione di conversione può causare errori di mancata corrispondenza del tipo. Ad esempio, una stringa come "x9x" non può essere convertita in un numero, quindi CInt ("x9x") causerà un errore di runtime che interrompe l'esecuzione.