Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Datové typy VBScriptu

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. Jestliže se pracuje s číselnými daty, VBScript předpokládá, že to jsou číselná data a pracuje s nimi jako s čísly. Jestliže se pracuje s řetězcovými daty, VBScipt s nimi pracuje jako s řetězci. Samozřejmě lze používat 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 ("").

 
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 reprezentující 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 0)

Viz poznámky níže.

Byte Celá čísla (1 bajt) v rozsahu: 0 do 255.
Integer Celá čísla (2 bajty) v rozsahu: -32,768 do 32,767.
Long Celá čísla (4 bajty) v rozsahu: -2,147,483,648 do 2,147,483,647.
Single Reálná čísla (4 bajty) s přesností na 7 míst v rozsahu:

-3.402823E38 do -1.401298E-45 (záporné hodnoty).

1.401298E-45 do 3.402823E38 (kladné hodnoty).

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é hodnoty).

4.94065645841247E-324 do 1.79769313486231E308 (kladné hodnoty).

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 jakýkoliv 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.
 
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:

Zadávání hodnot hexadecimální konstantou:

Do proměnné lze zadat číslo jako konstantu v decimálním tvaru, například:

nVal = 36524
nebo v hexadecimálním tvaru, kdy se používá prefix &h, například:
nVal = &h8EAC
(8EAC hexadecimálně 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 vytváří 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 datového typu Boolean je sice z logického hlediska jen dvouhodnotová (true / false), ale ve skutečnosti je tento typ uložen jako 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é na true nedoporučujeme.

Příklad:

If value = true Then ...

Takto nastavená podmínka není vhodná, protože pokud bude mít proměnná value hodnotu například 2, pak se podminka 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 proto lepší udělat podmínku následovně:

If Not value = false Then ...

Poznámky k datovému typu Date:

Pokud je hodnota datumu a/nebo času uložena v datovém typu Date, pak lze hodnoty rok/měsíc/den/hodina/minuta/sekunda získat například pomocí VBScript metod Year/Month/Day/Hour/Minute/Second. Viz také VBScript funkce s datem a časem a Pm metody s datumem a časem.
 
Vytvoření datumu z datového 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í / záložka datum". Například pokud v místním nastavení je datum nastaven na formát d.M.yyyy, potom lze čas jako String zadat následujícím způsobem:

Dim MyTime, MyDate, MyDateTime
MyTime = CDate("18:59:33")
MyDate = CDate("31.12.2016")
MyDateTime = CDate("31.12.2016 18:59:33")
 
Vytvoření datumu VBScript zápisem konstanty:

Pokud je datum (čas, datum a čas) zadáváno tímto způsobem, 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 datumu 29.12.1899.

Čas (hodiny, minuty, sekundy) 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 představuje 12 hodin, 1/24/60 představuje 1 minutu.

 

Následující script bude do proměnné MyDateTime přiřazovat při každém provedení scriptu hodnotu datumu a času větší o jeden den a jednu minutu.

MyDateTime = CDate(MyDateTime + 1 + 1/24/60)
Pokud byla proměnná MyDateTime inicializována hodnotou 1, potom po prvním provedení scriptu bude hodnota proměnné rovna "1.1.1900 0:01:00", po druhém provedení bude hodnota rovna "2.1.1900 0:02:00".
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice