VBScript má pouze jeden datový typ zvaný
Variant. Je to speciální druh datového typu, který může obsahovat různé informace. Protože
Variant je jediný datový typ VBScriptu, je vracen jeho všemi funkcemi.
V nejjednodušším případě může
Variant obsahovat číselnou nebo řetězcovou informaci. Pokud se pracuje s číselnými daty, pak
VBScript předpokládá, že to jsou číselná data a pracuje s nimi jako s čísly. Pokud se pracuje s řetězcovými daty, pak
VBScript s nimi pracuje jako s řetězci. Samozřejmě lze použít také čísla v řetězcích. Taková čísla, která mají být chápána jako řetězce, musí být uzavřeny v uvozovkách ("").
Podtypy Variantu:
Kromě jednoduché číselné nebo řetězcové klasifikace, může
Variant specifikovat další odlišnosti číselných informací. Například může být číselná informace která představuje datum nebo čas. Samozřejmě může být také mnoho dalších kategorií číselných informací (např. logické hodnoty). Tyto rozdílné kategorie datového typu
Variant jsou nazývány podtypy.
Následující tabulka obsahuje podtypy datového typu Variant:
podtyp |
Popis |
Boolean |
Logická hodnota:
true (pravda, číselná hodnota je "nenula", obvykle -1) nebo
false (nepravda, číselná hodnota je 0)
Viz poznámky níže. |
Byte |
Celé číslo (1 bajt) v rozsahu: 0 do 255. |
Integer |
Celé číslo (2 bajty) v rozsahu: -32768 do 32767. |
Long |
Celé číslo (4 bajty) v rozsahu: -2,147,483,648 do 2,147,483,647.
Hexadecimální hodnota čísla lze zadat pomocí prefixu &H před číslem. Například &H10 v hexadecimálním tvaru představuje 16 decimálně. |
Single |
Reálné číslo (4 bajty) s přesností na 7 míst v rozsahu:
-3.402823E38 do -1.401298E-45 (záporné číslo).
1.401298E-45 do 3.402823E38 (kladné číslo).
Binární formát uložení je podle standardu IEEE-754 (32-bit) |
Double |
Reálné číslo (8 bajtů) s přesností na 15 míst v rozsahu:
-1.79769313486231E308 do -4.94065645841247E-324 (záporné číslo).
4.94065645841247E-324 do 1.79769313486231E308 (kladné číslo).
Binární formát uložení je podle standardu IEEE-754 (64-bit) |
Date |
Hodnota obsahující Datum a čas. Viz poznámky níže. |
String |
Textový řetězec o maximální délce 2 bilióny znaků ve znakové sadě Unicode. |
Object |
"ukazovátko" (reference) na objekt. |
Array |
Pole hodnot. Viz Jak pracovat s polem hodnot v systému PROMOTIC. |
Empty |
Příznak že hodnota není inicializována. |
Null |
Příznak že hodnota neobsahuje platná data. |
Nothing |
Příznak že hodnota neobsahuje platný objekt. |
Pro konverzi dat do jiného datového podtypu lze použít konverzní VBScript funkce
CBool,
CByte,
CInt,
CLng,
CSng,
CDbl,
CDate,
CStr.
Pro testování, zda lze proměnnou vyhodnotit v daném podtypu, lze použít VBScript funkce
IsNumeric,
IsDate,
IsObject,
IsEmpty,
IsNull,
IsArray. Funkcemi
VarType a
TypeName lze zjistit, kterého podtypu proměnná je.
Je však lepší použít metody Pm.GetVarType a Pm.IsValid.
Poznámky k celočíselným datovým typům Byte, Integer a Long:
Nastavení hodnot konstantou v hexadecimálním tvaru:
Lze zadat číslo jako konstantu decimálně, například:
nebo v hexadecimálním tvaru, kdy se používá prefix
&h, například:
(
8EAC v hexadecimálním tvaru je
36524 decimálně).
VBScript však hexadecimální konstanty vyhodnocuje tak, že pokud jsou 2-bajtové (jako v našem případě), pak z nich vytvoří datový typ
Integer. Protože má však hodnota
8EAC nastaven nejvyšší bit, bude se tato konstanta
považovat za záporné číslo s hodnotou
-29012!
Poznámky k datovému typu Boolean:
Hodnota typu
Boolean je sice z logického hlediska jen dvouhodnotová (
true /
false), ale ve skutečnosti je tento typ uložen jako datový typ
Integer a předpokládá se že
false je
nula a
true je
ne-nula.
A právě takto chápána hodnota
true činí potíže, protože standardně má sice hodnotu
-1, ale jakákoli jiná nenulová hodnota je také
true !! Z toho plyne že porovnávat hodnoty proměnných na
true nedoporučujeme.
Příklad:
Takto nastavená podmínka není vhodná, protože pokud hodnota proměnné
value bude například
2, pak se podmínka vyhodnotí jako nepravdivá, i když z logického hlediska pravdivá je (hodnota je ne-nula a tedy je
true). Vždy je proto doporučeno
neporovnávat s true (protože
true je vícehodnotové) ale
porovnávat s false (
false je vždy nula).
Pro náš případ je lepší udělat podmínku následovně:
If Not value = false Then ...
Poznámky k datovému typu Date:
Pokud hodnota datumu a času je typu
Date, pak hodnoty rok/měsíc/den/hodina/minuta/sekunda lze získat například:
Viz také
Pm metody pro datum a čas a
VBScript funkce s datumem a časem.
Vytvoření datumu z hodnoty typu String:
Do uvozovek je nutno vypsat požadované datum (čas, datum a čas) ve formátu zadaném v nastavení
OS Windows "Ovládací panely / Místní nastavení / karta datum". Například pokud v místním nastavení je datum nastaven na formát
d.M.yyyy, pak čas lze zadat jako
String následovně:
Dim MyTime, MyDate, MyDateTime
MyTime = CDate("18:59:33")
MyDate = CDate("31.12.2024")
MyDateTime = CDate("31.12.2024 18:59:33")
Vytvoření datumu VBScript zápisem konstanty:
Pokud datum (čas, datum a čas) je zadáváno tímto způsobem, pak nezáleží na nastavení počítače a datum (čas, datum a čas) bude vždy ve správném formátu. Datum (čas, datum a čas) se zadává pomocí znaku # ve formátu
#dd/mm/yy# (nebo
#hh:mm:ss# nebo
#dd/mm/yy hh:mm:ss#):
Dim MyTime, MyDate, MyDateTime
MyTime = #18:59:33#
MyDate = #23/10/05#
MyDateTime = #23/10/13 18:59:33#
Vytvoření datumu z reálného čísla:
Datum (rok, měsíc, den) je reprezentováno
celou částí reálného čísla - je to počet dnů od
30.12.1899. Hodnota
1.0 odpovídá datumu
31.12.1899, hodnota
–1.0 odpovídá datumu
29.12.1899.
Čas (hodina, minuta, sekunda) je reprezentován
desetinnou částí reálného čísla. Hodnota
x.5 znamená přesně poledne (
12:00:00) ve dni
x.
Hodnota od
0.0 do
1.0 je speciální případ. Hodnota se nebere jako datum ale pouze jako čas nebo časové rozpětí. Hodnota
0.5 znamená
12 hodin, hodnota
1/24/60 znamená 1 minutu.
Následující skript bude do proměnné
MyDateTime přiřazovat při každém provedení skriptu hodnotu datumu a času větší o jeden den a jednu minutu.
MyDateTime = CDate(MyDateTime + 1 + 1/24/60)
Pokud proměnná
MyDateTime byla inicializována hodnotou 1, pak po prvním provedení skriptu bude hodnota proměnné rovna
"1.1.1900 0:01:00", po druhém provedení bude hodnota rovna
"2.1.1900 0:02:00".