Come dichiaro un tipo di variabile vbscript? [duplicare]
Quanto segue genera un errore con o senza Option Explicit
set.
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 Explicit
set?
Risposte
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) ewscript
(quando non si desidera che venga visualizzata una finestra CMD). - L'ambiente è anche ospitato da IIS per Classic ASP
.asp
/.asa
e 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.
- Questo ambiente è ospitato da
- 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 Variant
oggetto 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 Set
e in Let
base al tipo previsto di un valore, o come tu può essere utilizzato solo Const
in 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).
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.