Promotic
WikipediaLinkedInYoutubeTwitterFacebook

Typy danych VBScript

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 stosować 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, najczęściej -1) lub
false (nieprawda, wartość liczbowa 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.
 
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:

Wprowadzanie wartości stałą w układzie szsnastkowym:

Do zmiennej można wprowadzić liczbę jako zmienną w układzie dziesiątkowym, na przykład:

nVal = 36524
lub w układzie szesnastkowym, kiedy jest stosowany prefix &h, na przykład:
nVal = &h8EAC
(8EAC w układzie szesntastkowym odpowiada 36524 w układzie dziesiątkowym). Jednak VBScript oblicza stałe szestnatkowe w ten sposób, że jeżeli są dwubajtowe (jak w naszym przypadku), wtedy wytwarza 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 danych Boolean jest wprawdzie z logicznego punktu widzenia tylko dwuwartościowa (true / false), lecz w rzeczywistości typ ten jest zapisany jako typ 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:

If value = true Then ...

W ten sposób ustawiony warunek nie jest stosowny, ponieważ jeżeli zmienna value będzie mieć wartość 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 więc lepszym warunek ustawić następująco:

If Not value = false Then ...

Notatki dotyczące typu danych Date:

Jeżeli wartość daty oraz/lub czasu jest zapisana w typie danych Date, wtedy wartości rok/miesiąc/dzień/godzina/minuta/sekunda można uzyskać na przykład przy pomocy metod VBScript Year/Month/Day/Hour/Minute/Second. Patrz również Funkcje VBScript do pracy z datą i czasem oraz Pm Metody do pracy z datą i czasem.
 
Wytworzenie daty z typu danych String:

Jest konieczne zapisanie wymaganej daty (czas, data oraz czas) do cudzysłowia w formacie wprowadzonym w ustawieniu SO Windows "Panel Sterowania / Ustawienia lokalne / zakładka data". Na przykład jeżeli w ustawieniu lokalnym jest data ustawiona na format d.M.yyyy, wtedy czas jako String można wprowadzić w następujący sposób:

Dim MyTime, MyDate, MyDateTime
MyTime = CDate("18:59:33")
MyDate = CDate("31.12.2018")
MyDateTime = CDate("31.12.2018 18:59:33")
 
Wytworzenie daty VBScript przez zapis stałej:

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) można wprowadzić 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, 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".
© MICROSYS, spol. s r. o.Tavičská 845/21 703 00 Ostrava-Vítkovice