|
Tipuri de date in Visual Basic
Asa cum am mentionat deja, variabilele sint utilizate pentru a memora valori. Variabilele au un nume si un tip de date. Tipul de date al unei variabile determina modul de reprezentare in memorie al valorilor acestei variabile. Toate variabilele au un tip de date care determina ce fel de valori pot fi memorate. Daca nu se specifica un tip de date, variabila are implicit tipul Variant. Tipul de date variant poate reprezenta tipuri de date diferite in situatii diferite. Visual Basic efectueaza automat toate conversiile necesare.
Tipurile de date se utilizeaza si in cazul altor obiecte, in afara de variabile. Atunci cind se asigneaza o valoare unei proprietati, acea valoare are un tip de date. Argumentele functiilor au, de asemenea, un tip de date. De fapt, orice implica date implica, de asemenea, si tipuri de date.
Tabelul urmator prezinta tipurile de date, intervalul de valori si modul de memorare al acestora:
Tip de date
Mod de memorare
Domeniul de valori
Byte
1 octet
0 la 255
Boolean
2 octeti
True sau False
Integer
2 octeti
-32,768 la 32,767
Long
4 octeti
-2,147,483,648 la 2,147,483,647
Single
4 octeti
-3.402823E38 la -1.401298E-45 pentru valori negative;
1.401298E-45 la 3.402823E38 pentru valori pozitive
Double
8 octeti
-1.79769313486232E308 la -4.94065645841247E-324 pentru valori negative;
4.94065645841247E-324 la 1.79769313486232E308 pentru valori pozitive
Currency
8 octeti
-922.337,203,685,477.5808 la 922,337,203,685,477.5807
Decimal
14 octeti
+/-79,228,162,514,264,337,593,543,950,335 fara punct zecimal;
+/- 7.9228162514264337593543950335 cu 28 de pozitii la dreapta punctului zecimal;
cel mai mic numar diferit de zero este +/- 0.0000000000000000000000000001
Date
8 octeti
1 ianuarie 100 la 31 decembrie 9999
Object
4 octeti
Referinta la un obiect
String ( lungime varaibila )
10 octeti+lungimea sirului
0 pina la aproximativ 2 miliarde
String ( lungime fixa )
Lungimea sirului
1 pina la 65,400
Variant ( cu numere )
16 octeti
Orice valoare numerica din domeniul Double
Variant ( cu caractere )
22 octeti+lungimea sirului
Acelasi domeniu ca si pentru tipul String de lungime variabila
Definit de utilizator ( cu Type )
Numar cerut de elemente
Domeniul fiecarui element este acelasi cu domeniul tipului de date la care apartine
Tipul de date Byte
Variabilele de tip Byte se memoreaza ca numere fara semn, pe 1 octet si au valori cuprinse intre 0 si 255.
Tipul de date Boolean
Variabilele de tip Boolean sint memorate ca numere pe 2 octeti, dar pot lua numai doua valori: True si False. Variabilele de tip boolean se afiseaza ca True sau False, cind se utilizeaza comanda Print sau #True#, respectiv #False# cind se utilizeaza comanda Write #. Trebuie utilizate cuvintele cheie True si False pentru a asigna una dintre aceste valori variabilelor booleene.
Atunci cind se face conversia altor valori numerice la valori booleene, 0 devine False si orice valoare nenula devine True. Atunci cind valorile booleene se convertesc la alte tipuri de date, False devine 0, iar True devine -1.
Tipul de date Integer
Variabilele de tip Integer sint memorate pe 2 octeti si pot lua valori cuprinse intre -32768 si 32767. Caracterul utilizat pentru declararea acestui tip de date este semnul procent ( % ). Variabilele de tip Integer se pot utiliza si pentru a reprezenta valorile enumerate. O valoare enumerata poate contine un set finit de numere intregi unice, fiecare avind o semnificatie speciala in contextul in care se utilizeaza. Valorile enumerate furnizeaza un mod convenabil de selectie dintr-un numar cunoscut de alegeri. Este bine sa se defineasca constante pentru fiecare valoare enumerata cu ajutorul comenzii Const.
Tipul de date Long
Variabilele de tip Long ( Long Integer ) se memoreaza ca numere cu semn pe 4 octeti si pot lua valori cuprinse intre -2,147,483,648 si 2,147,483,647. Caracterul utilizat pentru declaratia acestui tip de date este ampersand ( & ).
Tipul de date Single
Variabilele de tip Single ( numere reale in simpla precizie ) se memoreaza ca numere reale pe 4 octeti si pot lua valori cuprinse intre -3.402823E38 si -1.401298E-45 pentru valorile negative si 1.401298E-45 si 3.402823E38 pentru valori pozitive. Caracterul utilizat pentru declaratia acestui tip de date este semnul exclamarii ( ! ).
Tipul de date Double
Variabilele de tip Double ( numere reale in dubla precizie ) se memoreaza ca numere reale pe 8 octeti si pot lua valori cuprinse intre -1.79769313486232E308 si 4.94065645841247E-324 pentru valorile negative si 4.94065645841247E-324 si 1.79769313486232E308 pentru valori pozitive. Caracterul utilizat pentru declaratia acestui tip de date este # .
Tipul de date Currency
Variabilele de tip Currency se memoreaza ca numere in virgula fixa cu 15 cifre la stinga punctului zecimal si 4 cifre la dreapta punctului zecimal, pe 8 octeti. Valorile de acest tip pot lua valori cuprinse intre -922,337,203,685,477.5808 si 922,337,203,685,477.508. Caracterul utilizat pentru declaratia acestui tip de date este semnul at ( @ ). Acest tip de date este util in calculele financiare unde acuratetea este importanta.
Tipul de date Decimal
Variabilele de tip Decimal se memoreaza pe 12 octeti ca intregi fara semn scalati cu o putere variabila a lui 10. Acest factor de scalare specifica numarul de cifre de la dreapta punctului zecimal si ia valori intre 0 si 28. Cu scala 0 ( fara cifre zecimale ) cea mai mare valoare posibila este +/-79,228,162,514,264,337,593,543,950,335. In cazul a 28 de cifre zecimale cea mai mare valoare este +/- 7.9228162514264337593543950335, iar cea mai mica valoare diferita de zero este +/-0.0000000000000000000000000001.
Tipul de date Date
Variabilele de tip Date sint memorate pe 8 octeti ca numere in virgula flotanta si reprezinta date din intervalul 1 ianuarie 100 si 31 decembrie 9999 si ora in intervalul 0:00:00 - 23:59:59. Literalii de tip date trebuie inclusi intre #, de exemplu #January 1, 1993#.
Atunci cind valori de tip numeric sint convertite la tipul Date, valorile de la stinga punctului zecimal reprezinta data, iar valorile de la dreapta punctului zecimal reprezinta ora. Numerele negative reprezinta date de dinainte de 30 decembrie 1899.
Tipul de date Object
Variabilele de tip Object se memoreaza pe 4 octeti ca adrese care refera obiecte. Cu ajutorul comenzii Set, unei variabile de tip Object i se poate asigna referinta la orice obiect.
Tipul de date String
Exista doua tipuri de siruri : cu lungime variabila si cu lungime fixa.
Un sir de lungime variabila poate contine pina la aproximativ 2 miliarde ( 2^31) caractere.
Un sir de lungime fixa poate contine de la 1 pina la aproximativ 64K (2^16) caractere.
Codurile pentru caracterele de tip String sint de la 0 la 255. Primele 128 de caractere ( 0 la 127) corespund literelor si simbolurilor de pe o tastatura standard (U.S.). Aceste primele 128 de caractere sint aceleasi ca cele din setul ASCII. Urmatoarele 128 de caractere ( 128 la 255 ) reprezinta caractere speciale. Caracterul utilizat pentru declaratia acestui tip de date este semnul dolar ( $ ).
Tipul de date definit de utilizator
Utilizatorul poate sa defineasca un tip de date utilizator la nivel de modul cu ajutorul urmatoarei sintaxe :
[ Private | Public ] Type numevar
numeelement [ ( [ indici ] )] As tip
[numeelement [ ( [ indici ] )] As tip ]
..
End Type
Sintaxa comenzii Type are urmatoarele parti :
Parte
Descriere
Public
Este optional si se utilizeaza pentru a declara tipuri de date care sint accesibile tuturor procedurilor din toate modulele tuturor proiectelor
Private
Este optional si se utilizeaza pentru a declara tipuri de date care sint accesibile numai modulului in care se face declaratia
Numevar
Este obligatoriu si reprezinta numele tipului de date definit de utilizator.Trebuie sa respecte aceleasi reguli ca si numele variabilelor
Numeelement
Este obligatoriu si reprezinta numele unui element al tipului de date definit de utilizator. Trebuie sa respecte aceleasi reguli ca si numele variabilelor, cu exceptia faptului ca se pot folosi cuvinte cheie.
Indici
Este optional si reprezinta dimensiunile unui tablou. La declararea unui tablou ale carui dimensiuni se schimba trebuie utilizate numai parantezele. Pentru indici se utilizeaza urmatoarea sintaxa :
[ j To ] s [, [j To s ].
Daca j nu este precizat , atunci el este dat de comanda Option Base. Daca comanda Option Base nu este prezenta, atunci j este zero.
tip
Este obligatoriu si reprezinta tipul de date al elementului.Poate fi byte, boolean, integer, long, currency, single, double, decimal, date, string, object, variant, sau un alt tip de date definit de utilizator.
Comanda Type poate fi utilizata numai la nivel de modul. Dupa declararea tipului de date cu comanda Type, utilizatorul poate declara variabile de acest tip oriunde in cadrul scopului declaratiei de tip, cu ajutorul cuvintelor rezervate Dim, Private, Public, ReDim sau Static.
In modulele standard, tipurile de date definite de utilizator sint implicit publice. Acest lucru poate fi schimbat prin utilizarea cuvintului cheie Private. In modulele clasa, tipurile de date definite de utilizator sint numai private si acest lucru nu poate fi schimbat cu ajutorul cuvintului cheie Public.
Tipurile de date definite de utilizator se folosesc de obicei cind se lucreaza cu inregistrari care constau dintr-un numar de elemente de tipuri diferite.
Exemplu :
Type AngajatRec ' Creaza un tip de date definit de utilizator
Marca As Integer ' Se definesc elementele tipului de date
Nume As String * 20
Adresa As String * 30
Tele As Long
DataAng As Date
End Type
Sub CreateRec()
Dim Rec As AngajatRec ' Declarare variabila.
' Asignarile facute variabilei Rec trebuie sa apara intr-o procedura
Rec.Marca= 12003 ' Se asigneaza o valoare unui element.
End Sub
Tipul de date Variant
Tipul de date Variant este tipul de date al tuturor variabilelor care nu sint declarate in mod explicit de un anume tip cu una dintre comenzile Dim, Private, Public sau Static. Este un tip de date special care poate contine orice fel de date, cu exceptia sirurilor de lungime fixa si a tipurilor de date definite de utilizator. Poate contine, de asemenea, valorile speciale Empty, Error, Nothing si Null. Datele de tip numeric sint mentinute intr-un variant in formatul lor original. De exemplu, daca se asigneaza unui variant o valoare de tip Integer, viitoarele operatii vor trata varintul ca pe intreg. Daca se executa o operatie aritmetica asupra unui variant care contine o valoare de tip byte, integer, long sau single, iar rezultatul depaseste domeniul tipului de date respectiv, rezultatul este convertit in cadrul variantului la urmatorul tip de date mai mare. O valoare de tip byte este convertita la integer, una de tip integer la long, iar una de tip long sau single la double. Atunci cind un variant contine o valoare de tip currency, decimal sau double care depaseste domeniul respectiv, apare eroare.
Tipul de date variant se utilizeaza in locul oricarui alt tip de date si permite o modalitate mai flexibila de lucru cu datele.
In urmatorul exemplu :
Dim Mvar as Variant
Mvar=98052
Variabila Mvar contine o reprezentare numerica, adica valoarea 98052.
Valoarea Empty reprezinta o variabila de tip variant care nu a fost initializata, adica nu i s-a asignat o valoare initiala. Un variant care contine Empty este 0 daca este utilizat intr-un context numeric si un sir de lungime zero ("") daca este utilizat intr-un context sir.
Valoarea Null indica faptul ca variabila de tip variant nu contine date valide in mod intentionat.
Error este o valoare speciala utilizata pentru a indica ca intr-o procedura a aparut o conditie de eroare.