Mövzu № Visual Basic-də verilənlərin tiplərinin çevrilməsi



Yüklə 42,8 Kb.
səhifə1/4
tarix22.05.2023
ölçüsü42,8 Kb.
#127380
  1   2   3   4
Mövzu № 8 Visual Basic-də verilənlərin tiplərinin çevrilməsi


Mövzu № 8.
Visual Basic-də verilənlərin tiplərinin çevrilməsi
Kompilyasiya zamanı VBA tiplər arasındakı "fərqləri" aradan götürməyə çalışaraq, bütün verilənləri bir tipə çevirməyə çalışır. Bu mümkün olmasa tiplərin uyğun gəlməməsi haqqında (type-mismatch) istifadəçiyə xəbər verir və öz işini dayandırır. Yalnız ifadədə mövcud tip fərqləri aradan götürüldükdən sonra kodun kompilyasiyası mümkündür.
Proqramlaşdırmada tiplərin xüsusi funksiyalarla çevrilməsini təmin etmək daha effktiv kodun yaranmasına səbəb olur. VB/VBA-nın avtomat tip çevirmələrindən imkan daxilində az istifadə etmək daha məqsədəuyğundur Çünki, avtomat tip çevirmələri proqramın yerinə yetirilməsi üçün izafi vaxt və yaddaş itkisinə səbəb olur.
İndi isə VB/VBA proqramlaşdırmasında tip və tip çevirmələrilərində daha çox istifadə olunan bəzi daxili funksiyalarla tanış olaq.
TypeName()verilənin tipini göstərən funksiya1.
Bu funksiya vasitəsilə verilənin tipini müəyyən edə bilərik. Aşağıdakı koddu analiz edək:
Expressions.e_TypeName1 (ilkin kod)
1) Sub e_TypeName1()
2) Dim a As String, b As Integer, c As Boolean
3) d = "21.03.2009"
4) f = 12.1234
5) e = 122323434
6) g = 1234
7) m = 12
8) n = False
9) Debug.Print TypeName(a) ' res: String
10) Debug.Print TypeName(b) ' res: Integer
11) Debug.Print TypeName(c) ' res: Boolean
12) Debug.Print TypeName(d) ' res: String
13) Debug.Print TypeName(f) ' res: Double
14) Debug.Print TypeName(e) ' res: Long
15) Debug.Print TypeName(g) ' res: Integer
16) Debug.Print TypeName(m) ' res: Integer
17) Debug.Print TypeName(n) ' res: Boolean
18) End Sub
Analiz:
2-ci sətrdə a, b, c dəyişənləri açıq şəkildə, müəyyən tipdə elan olunublar. Bu 3 dəyişənin tipini 9-11-ci sətrlərdə yoxlayırıq. Nəticələr, gözlədiyimizdən fərqli deyil.
3-cü sətrdə biz elan edilməmiş d dəyişənini "21.03.2009" tarix tipi kimi inisilizasiya etsəkdə, bu dəyişənin VBA tərəfindən String tipi(!!!) kimi "başa" düşüldüyü ortaya çıxır. (12-ci sətr)
4-cü sətrdə elan olunmamış f dəyişənini 12.1234 ədədi ilə inisilizasiya etdik. VBA bu ədədi Double tipi kimi başa düşdü. Göründüyü kimi VBA bu halda Double tipinini Currency tipindən "üstün" tutdu. (13-cü sətr)
5-ci sətrdə elan olunmamış e dəyişənini 122323434 ədədi ilə inisilizasiya etdik. VBA bu ədədi Long tipi kimi başa düşdü. VBA burda özünü "ağıllı" aparıb, bu uzunluqda ədədin yalnız Long tipində olmasını düzgün müəyyən etdi. (14-cü sətr)
6-cı sətrdə elan olunmamış g dəyişənini 1223 ədədi ilə inisilizasiya etdik. VBA bu ədədi Integer tipi kimi başa düşdü. (15-ci sətr)
7-ci sətrdə elan olunmamış m dəyişənini 12 ədədi ilə inisilizasiya etdik. VBA bu ədədi Byte tipi kimi qəbul edə bilərdi, amma o, üstünlüyü Integer(!!!) tipinə verdi. (16-cı sətr)
8-ci sətrdə elan olunmamış n dəyişənini True ilə inisilizasiya etdik. VBA bu ədədi Boolean tipi kimi qəbul etdi.(17-ci sətr)
Nəticə: VBA-nın "çaşmaması"(!!!) üçün dəyişənləri, tiplərini açıq göstərməklə elan etmək lazımdır. Yəni dəyişənin tipinin VBA tərəfindən avtomatik müəyyən olunmasına imkan verilməməlidir!

Yüklə 42,8 Kb.

Dostları ilə paylaş:
  1   2   3   4




Verilənlər bazası müəlliflik hüququ ilə müdafiə olunur ©muhaz.org 2024
rəhbərliyinə müraciət

gir | qeydiyyatdan keç
    Ana səhifə


yükləyin