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áto čísla, která mají být chápána jako řetězce, musí být uzavřeny v uvozovkách ("").
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", většinou -1) nebo false (nepravda, číselná hodnota je 0) Viz poznámky níže. |
Byte | Celá čísla (1 bajt) v rozsahu: 0 do 255. |
Integer | Celá čísla (2 bajty) v rozsahu: -32768 do 32767. |
Long | Celá čísla (4 bajty) v rozsahu: -2,147,483,648 do 2,147,483,647. Hexadecimální čísla lze zadat pomocí prefixu &H před číslem. Například &H10 v hexadecimální notaci představuje 16 v desítkové soustavě. |
Single | Reálná čísla (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á čísla (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 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.
Lze zadat číslo jako konstantu v decimálním tvaru
, například:nVal = 36524
nVal = &h8EAC
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é na true nedoporučujeme.
Příklad:
If value = true Then ...
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ě:
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ásledujícím způsobem:
Dim MyTime, MyDate, MyDateTime
MyTime = CDate("18:59:33")
MyDate = CDate("31.12.2020")
MyDateTime = CDate("31.12.2020 18:59:33")
Pokud je datum (čas, datum a čas) 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#
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 jen jako čas nebo časové rozpětí. Hodnota 0.5 znamená 12 hodin, 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)