Visual Basic Tip Dönüşümleri

Merhabalar, Visual Basic 6 yazılarımıza kaldığımız yerden devam ediyoruz. Bu yazımızda tip dönüşümlerini anlatacağım. Hadi başlayalım !
Visual Basic’te -32768 ile 32767 arasındaki tam sayıları tutmak için Integer, -2147483648 ile 2147483647 arasındaki tam sayıları tutmak için Long, true/false değerlerini tutmak için Boolean, 0 ile 255 arasındaki tam sayılarıları tutmak için Byte, -922337203685477.5808 ile 922337203685477.5807 arasındaki noktalı ve tam sayıları tutmak için Currency, -79228162514264337593543950335 ile -79228162514264337593543950335 arasındaki tam sayıları tutmak için decimal, veritipi belli olmayan ifadeleri (sayısal yada değil) tutmak için Variant, metinsel ifadeleri tutmak içinse String veritipi bulunmakta. Bu veritiplerini kullanacağımız verileri tutmak için kullanıyoruz. Tabi bazı durumlarda birbirlerine dönüşüm işlemi yapmamız gerekebilir. Örneğin, form üzerinde bir TextBox’ınız var ve kullanıcının girdiği değer üzerinde matematiksel işlem yapmanız gerekiyor. Bildiğiniz üzere TextBoxların Text özelliği ile bu veriyi alıyoruz fakat veritipi her zaman String olmakta. Fakat sizin matematiksel işlem yapabilmeniz için sayısal bir ifade olması gerekiyor. İşte o zaman kullanıcının girdiği değeri değerin büyüklüğüne göre uygun bir sayısal veritipine dönüştürmeniz gerekiyor. İşte bu durumlarda veritipi dönüşüm fonksiyonlarını kullanarak bu işlemi yapmanız gerekmekte.
Nerdeyse tüm diller gibi Visual Basic’te de tür dönüşümü için hazır fonksiyonlar var. Örneğin bir değişkeni Integer tipine dönüştürmek istiyorsanız CInt() fonksiyonunu kullanmanız gerekiyor. Bu fonksiyon Integer tipine dönüştürmek istediğiniz ifadeyi parametre olarak alıyor ve geriye o değeri Integer tipinde geri veriyor. Yalnız dikkat etmeniz gereken şey parametre olarak verdiğiniz ifadenin 10 tabanında olması gerekiyor. 8 yada 16 tabanında bir ifadeyi parametre olarak gönderirseniz “Type mismatch” hatası alırsınız. Örneğin form üzerinde textBox1 adında bir tane TextBox olsun ve buraya girilen değeri 10 ile çarpmamız gereksin. O halde kodumuz şöyle olacaktır.
Dim sayi as Integer
sayi = CInt(textBox1.Text) * 10
Herhangi bir ifadeyi String tipine dönüştürmek için CStr() fonksiyonunu kullanabilirsiniz. Bu fonksiyon parametre olarak herhangi bir şey alabilir yani veritipinin ne olduğu önemli değil çünkü Visual Basic’te herşey String olabilir, String tipine çevrilebilir. Bunun örneğide şu şekilde olsun;
Dim veri as String
veri = CStr("79228162514264337593543950335")
Normalde parametre olarak gönderdiğimiz değer decimal tipinin üst limiti yani aslında decimal veritipi bu sayıyı tutabilir ama String olarak lazımsa String’e de çevirip kullanabiliriz.
Sayısal bir ifadeyi Boolean tipine dönüştürmek için CBool() fonksiyonu kullanılıyor ve bu fonksiyon parametre olarak herhangi bir şey alabilmekte fakat fonksiyon tanımı o şekilde de olsa sayısal olmayan bir şeyi parametre olarak gönderdiğiniz zaman “Type mismatch” hatası vermekte. Sayısal olarak gönderdiğiniz parametre 0 (sıfır) ise false, diğer tüm durumlarda true döndürmekte.
Sayısal bir ifadeyi Decimal tipine dönüştürmek isterseniz CDec() fonksiyonunu kullanabilirsiniz ve bu fonksiyon parametre olarak her ne kadar herhangi bir şeyi kabul etse de sayısal olmayan bir şeyi gönderirseniz “Type mismatch” hatası alırsınız. Ayrıca Decimal veritipinin taşıyabileceği aralığın (-79228162514264337593543950335 ile -79228162514264337593543950335) dışında bir değer gönderirseniz de “Overflow” hatası alırsınız.
Sayısal bir ifadeyi Byte türüne dönüştürmek için CByte() fonksiyonu kullanılıyor. Bu fonksiyon parametre olarak 0-255 aralığında olan herhangi bir sayıyı (tam yada ondalıklı olabilir) Byte türüne dönüştürüyor. 0-255 aralığının dışında (255 dahil) bir sayıyı parametre olarak gönderirseniz “Overflow”, diğer tüm parametrelerde “Type mismatch” hatası alırsınız. Son olarak noktalı sayıları da kendisine en yakın tam sayıya yuvarlıyor. .5 ve sonrasını bir sonraki tam sayıya, diğerlerini bir önceki tam sayıya yuvarlıyor (örneğin 1.5 verirseniz 2, 1.49 verirseniz 1, 1.1 verirseniz de 1 dönecektir).
Sayısal bir ifadeyi Currency tipine dönüştürmek için CCur() fonksiyonu kullanılmakta ve bu fonksiyon parametre olarak Currency veritipinin taşıyabildiği aralıktaki tüm sayıları parametre olarak alabiliyor. Sayısal olmayan bir şeyi parametre olarak verirseniz “Type mismatch”, Currency veritipinin taşıyabildiği aralığın dışında bir sayıyı gönderirseniz de “Overflow” hatası vermekte. Ayrıca noktalı sayıları virgülden sonra 4 basamak olacak şekilde yuvarlıyor. Örneğin 1 verirseniz 1, 1.2 verirseniz 1.2, 1.454545 verirseniz 1.4545, 1.999999 verirseniz 2 diyecektir.
Bir veriyi Variant tipine dönüştürmek için CVar() fonksiyonu kullanılmakta ve parametre olarak herşeyi alabilmekte. Variant veritipi herşeyi taşıyabileceği için bu fonksiyonunda parametre olarak alabileceği değerler çok geniş. String, Integer, Long gibi veritiplerinden olan herşeyi parametre olarak gönderebilirsiniz. Fakat bir sınıf nesnesi (New anahtar kelimesi ile türetilen şeyler) gönderirseniz işte o zaman “Object doesn’t support this property or method” hatası verecektir 😊
Bu zamana kadar saydığım ve anlattığım veritiplerini ilgili fonksiyonlarını kullanarak dönüşüm yapabiliyoruz fakat Long için bir dönüşüm söz konusu değil ne yazık ki. Yani bir veriyi Long tipine dönüştüremiyorsunuz. Evet bu yazımızda bu kadardı, tüm Visual Basic yazılarımıza buraya tıklayarak ulaşabilirsiniz. Herkese hayırlı günler.