Update cookies preferences
Promotic

Datové typy VBScript

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:
nVal = 36524
nebo v hexadecimálním tvaru, kdy se používá prefix &h, například:
nVal = &h8EAC
(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:
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ě:
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:
- pomocí objektu PmDateObject a jeho metod GetYear/GetMonth/GetDay/GetHour/GetMinute/GetSecond atd.
- pomocí metod VBScript Year/Month/Day/Hour/Minute/Second.
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".
© MICROSYS, spol. s r.o.