W najprostszym przypadku Variant może zawierać informację liczbową lub łańcuchową. Jeżeli są opracowywane dane liczbowe, wtedy VBScript zakłada, że są to dane liczbowe i pracuje z nimi tak jak z liczbami. Jeżeli są opracowywane dane łańcuchowe, wtedy VBScript pracuje z nimi jako z łańcuchami. Oczywiście można zastosować liczby w łańcuchach. Takie liczby, które mają być rozumaine jako łańcuchy, muszą być zamknięte w cudzysłowiu ("").
Oprócz prostej klasyfikacji liczbowej lub łańcuchowej Variant może określać dalsze odrębności wartości liczbowych. Na przykład wartością liczbową może być informacja która przedstawia datę lub czas. Oczywiście może być również wiele innych kategorii informacji liczbowych (np. wartości logiczne). Te różne kategorie typu danych Variant są nazywane podtypami.
Następująca tabela zawiera podtypy typu danych Variant:
podtyp | Opis |
---|---|
Boolean | Wartość logiczna: true (prawda, wartość liczbowa jest różna od zera, najczęściej -1) lub false (nieprawda, wartość liczbowa jest 0) Patrz notatki poniżej. |
Byte | Liczby całkowite (1 bajt) w zakresie: 0 do 255. |
Integer | LIczby całkowite (2 bajty) w zakresie: -32768 do 32767. |
Long | Liczby całkowite (4 bajty) w zakresie: -2,147,483,648 do 2,147,483,647. Liczby szesnastkowe można wprowadzić za pomocą prefixu &H przed liczbą. Na przykład &H10 w układzie szesnastkowym przedstawia liczbę 16 w układzie dizesiątkowym. |
Single | Liczby rzeczywiste (4 bajty) z dokładnoscią na 7 miejsc w zakresie: -3.402823E38 do -1.401298E-45 (liczba ujemna). 1.401298E-45 do 3.402823E38 (liczba dodatnia). Binarny format zapisu odpowiada standardowi IEEE-754 (32-bit) |
Double | Liczby rzeczywiste (8 bajtów) z dokładnoscią na 15 miejsc w zakresie: -1.79769313486231E308 do -4.94065645841247E-324 (liczba ujemna). 4.94065645841247E-324 do 1.79769313486231E308 (liczba dodatnia). Binarny format zapisu odpowiada standardowi IEEE-754 (64-bit) |
Date | Wartość zawierająca Data oraz czas. Patrz notatki poniżej. |
String | Łańcuch tekstowy o maksymalne długości 2 biliony znaków w systemie kodowania znaków Unicode. |
Object | "wskaźnik" (odniesienie) do obiektu. |
Array | Tablica wartości. Patrz W jaki sposób pracować z tablicą wartości w systemie PROMOTIC. |
Empty | Znacznik, że wartość nie jest zinicjalizowana. |
Null | Znacznik, że wartość nie zawiera poprawnych danych. |
Nothing | Znacznik, że wartość nie zawiera poprawny obiekt. |
Do sprawdzenia, czy zmienną można obliczyć w określonym podtypie można zastosować funkcje VBScript IsNumeric, IsDate, IsObject, IsEmpty, IsNull, IsArray. Przy pomocy funkcji VarType oraz TypeName można stwierdzić, jakiego podtypu danych jest zmienna. Jednakże dogodniejszym jest wykorzystanie metod Pm.GetVarType oraz Pm.IsValid.
Można wprowadzić liczbę jako zmienną w układzie dziesiątkowym
, na przykład:nVal = 36524
nVal = &h8EAC
I właśnie w ten sposób rozumiana wartość true powoduje kłopoty, ponieważ standardowo ma wprawdzie wartość -1, lecz jakakolwiek inna wartość różna od zera jest także wartością true !! Z tego wypływa, że nie zalecamy porównywania wartości zmiennych na true.
Przykład:
If value = true Then ...
W ten sposób ustawiony warunek nie jest stosowny, ponieważ jeżeli wartość zmiennej value będzie na przykład 2, wtedy warunek zostanie obliczony jako nieprawdziwy, nawet jeżeli z logicznego punktu widzenia jet prawdziwym (wartość jest nie-zero a więc jest true). Dlatego zawsze zalecamy nie porównywanie z true (ponieważ true jest wielowartościowe) lecz porównywać z false (false jest zawsze zero).
W naszym przypadku jest lepiej warunek ustawić następująco:
Jest konieczne zapisanie wymaganej daty (czas, data oraz czas) do cudzysłowia w formacie wprowadzonym w ustawieniu SO Windows "Panel Sterowania / Ustawienia lokalne / karta data". Na przykład jeżeli w ustawieniu lokalnym jest data ustawiona na format d.M.yyyy, wtedy czas można wprowadzić jako String w następujący sposób:
Dim MyTime, MyDate, MyDateTime
MyTime = CDate("18:59:33")
MyDate = CDate("31.12.2020")
MyDateTime = CDate("31.12.2020 18:59:33")
Jeżeli jest data (czas, data oraz czas) wprowadzana w ten sposób, wtedy nie jest zależna od ustawienia komputera i data (czas, data oraz czas) będą zawsze w poprawnym formacie. Data (czas, data oraz czas) określa się przy pomocy znaku # w formacie #dd/mm/yy# (lub #hh:mm:ss# lub #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#
Data (rok, miesiąc, dzień) jest prezentowana prze całkowitą część liczby rzeczywistej - jest to ilość dni od 30.12.1899. Wartość 1.0 odpowiada dacie 31.12.1899, wartość –1.0 odpowiada dacie 29.12.1899.
Czas (godzina, minuta, sekunda) jest prezentowany dziesiętną częścią liczby rzeczywistej. Wartość x.5 oznacza dokładnie południe (12:00:00) w dniu x.
Wartość od 0.0 do 1.0 to przypadek specjalny. Wartość nie jest pobierana jako data, ale tylko jako czas lub przedział czasu. Wartość 0.5 oznacza 12 godzin, 1/24/60 oznacza 1 minutę.
Następujący skrypt będzie do zmiennej MyDateTime przypisywać przy każdym uruchomieniu skryptu wartość daty i czasu większą o jeden dzień i jedną minutę.
MyDateTime = CDate(MyDateTime + 1 + 1/24/60)