VBScript posiada tylko jeden typ danych określany jako
Variant. Jest to specjalny rodzaj typu danych, który może zawierać różne informacje. Ponieważ
Variant jest jedynym typem danych języka VBScript, jest ywracany we wszystkich jego funkcjach.
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 ("").
Podtypy danych Variantu:
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, zazwyczaj -1) lub
false (nieprawda, wartość liczbowa jest 0)
Patrz notatki niżej. |
Byte |
Liczba całkowita (1 bajt) w zakresie: 0 do 255. |
Integer |
Liczba całkowita (2 bajty) w zakresie: -32768 do 32767. |
Long |
Liczba całkowita (4 bajty) w zakresie: -2,147,483,648 do 2,147,483,647.
Liczba szesnastkowa można wprowadzić przy pomocy prefixu &H przed liczbą. Na przykład &H10 w układzie szesnastkowym przedstawia liczbę 16 w układzie dziesiątkowym. |
Single |
Liczba rzeczywista (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 |
Liczba rzeczywista (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 niż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 Jak 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 konwersji danych do innego typu danych można zastosować funkcje konwersji VBScript
CBool,
CByte,
CInt,
CLng,
CSng,
CDbl,
CDate,
CStr.
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.
Notatki dotyczące całkowitych typów danych Byte, Integer oraz Long:
Ustawienie wartości stałą w układzie szesnastkowym:
Można wprowadzić liczbę jako zmienną w układzie dziesiątkowym, na przykład:
lub w układzie szesnastkowym, kiedy jest stosowany prefiks
&h, na przykład:
(
8EAC w układzie szesnastkowym jest
36524 w układzie dziesiątkowym).
Jednak
VBScript oblicza stałe szestnatkowe w ten sposób, że jeżeli są 2-bajtowe (jak w naszym przypadku), wtedy wytworzy z nich typ danych
Integer. Ponieważ wartość
8EAC ma ustawiony najwyższy bit, to stała będzie
uważana za liczbę ujemną o wartości
-29012!
Notatki dotyczące typu danych Boolean:
Wartość typu
Boolean jest wprawdzie z logicznego punktu widzenia tylko dwuwartościowa (
true /
false), lecz w rzeczywistości typ ten jest zapisany jako typ danych
Integer i zakłada się, że
false jest równe
zeru oraz
true jest
nie-zero.
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:
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 zalecane
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:
If Not value = false Then ...
Notatki dotyczące typu danych Date:
Jeżeli wartość daty i czasu jest typu
Date, wtedy wartości rok/miesiąc/dzień/godzina/minuta/sekunda można uzyskać na przykład:
Patrz również
Pm Metody do pracy z datą i czasem oraz
Funkcje VBScript do pracy z datą i czasem.
Wytworzenie daty z wartości typu String:
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 następująco:
Dim MyTime, MyDate, MyDateTime
MyTime = CDate("18:59:33")
MyDate = CDate("31.12.2024")
MyDateTime = CDate("31.12.2024 18:59:33")
Wytworzenie daty VBScript przez zapis stałej:
Jeżeli data (czas, data oraz czas) jest 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#
Wytworzenie daty z liczby rzeczywistej:
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, wartość
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)
Jeżeli zmienna
MyDateTime została zinicjalizowana na wartość 1, wtedy po pierwszym wykonaniu skryptu będzie wartość zmiennej równa
"1.1.1900 0:01:00", po drugim wykonaniu będzie wartość równa
"2.1.1900 0:02:00".