Root > Documents > Web Güvenlik Açıkları > vb 1 (yeni baslayanlar icin)
Cyber-Warrior.Org \ Doküman \ Web Güvenlik Açıkları > vb 1 (yeni baslayanlar icin)
Madde
  Yazar : themyth
  Date : 23.11.2004 16:16:30
 
# vb 1 (yeni baslayanlar icin)
 

 Bölüm 1 - Visual Basic’e giris               

 

Konular:

Modül
Form

Prosedür

Prosedür Kurallari

Objelerin olaylari

Form_Load olayi

Degisken

Degiskenleri neden kullaniriz

Degisken Kurallari

 

 YENI TANIM : MODÜL

 

Modüller; içlerine sadece ve sadece kod yazabilecegimiz Visual Basic kod sayfalaridirlar. Modüllerde obje çizimi veya yerlestirilmesi bulunmamaktadir. “Not Defteri” gibi bos bir yazi alanini andirir. Yani MS Word veya MS Wordpad deki gibi metin düzenleme özelligi yoktur(Kalin-Italik-Alti Çizgili). Modüllere; daha sonra görecegimiz, prosedürler ve genel tanimlamalar yazilir.

 

 

 YENI TANIM : FORM


           
Form
, Visual Basic’te yapacagimiz programlarin objelerini yerlestirdigimiz dizayn edilebilir tasarim penceresidir. Yani program içinde görünecek veya gizli kalacak bütün objeler, bu form denen objeye yada objelere yerlestirilir.

 

          Ayrica bir form kod penceresi de içermektedir. Bu bölüme ise; forma çizdigimiz (yerlestirdigimiz) objelerin olaylarinda neler gerçeklesmesini istiyorsak bu kodlari uygun olarak bu objelerin kod kisimlarina gelerek yazariz. Formun kod penceresi aynen bir modül gibidir.

 

 

 YENI TANIM : PROSEDÜR

 

Prosedür; Visual Basic’te hazirladigimiz uygulamanin(program) olaylarinin ve islemlerinin gerçeklesmesi için kodlarin yazildigi bölümlere verilen isimdir.

 

 Yani programin kodunu yazarken istegimize göre istedigimiz komutlari, görevleri, islemleri; istedigimiz sekilde yazamayiz. Iste bunun için Visual Basic’in, programi çalistirinca hangi islemin; nerede, ne zaman, nasil, hangi yöntemle yapilacagini kavramasi ve buna göre islemi uygun ve zamaninda yapmasi için prosedürler kullaniriz. Yani prosedürleri paragraf gibi düsünebiliriz. Nasil bir kompozisyonda yaziyi belirli bir paragraf düzenine göre yaziyorsak, Visual Basic’te de kodlari ve islemleri belirli bir kurala göre yazmak gerekmektedir.

 

Visual Basic içerisinde iki tip prosedür vardir. Bunlardan biri “Sub” digeri “Function” dur. Visual Basic’te program kodlari sadece ve sadece prosedürlere yazilabilir. Paragraflarda oldugu gibi prosedürlerin bir baslangici ve bir bitisi vardir.

 

 Örnegin;

 

Sub Deneme()

 

End Sub

 

Burada belirtmis oldugumuz örnek; Deneme adinda bir prosedür’dür. Görüldügü gibi kalip bir kelime kullanip (Sub) prosedür ismini yaziyoruz, daha sonra da prosedürün bittigini belirtmek için “End Sub” ifadesini kullaniyoruz.

Biz zaten Visaul Basic’te Sub yazdiktan sonra herhangibi bir prosedür ismi girip, Enter tusuna bastigimizda, Visual Basic; “End Sub” ifadesini kendi eklemektedir. Iste bu yüzden bir daha “End Sub” yazmaya gerek yoktur.

 

 

Sub Deneme()

.................

.................

End sub


 

“.............” diye belirttigimiz alanlara da prosedürün kodlarini yaziyoruz. Bu alana prosedür çagrildiginda Visual Basic’in yapmasini istedigimiz kodlari yaziyoruz. “.......” diye belirtilen alana istedigimiz kadar uzunlukta kod yazabiliriz.

Bir prosedür\'ü çagirmak için ismini yazmak gerekir. Örnekte gördügünüz gibi "Deneme" adli  basit bir prosedür’ü çagirmak için sadece ismini yazmak yeterlidir.

 

Tabi bu bir programda bir prosedür bulunur demek anlamina gelmiyor. Istedigimiz kadar prosedür olusturabiliriz ve zaten en basit programlarda bile en az 20, 30 tane prosedür bulunmaktadir. Buna karsin Photoshop, Autocad gibi büyük programlarda on binlerce prosedür bulunmaktadir.

 

 Prosedür  Kurallari:

 

Prosedür isimleri asagidaki kurallara uydugu sürece her sey olabilir.

 

 Birkaç örnek prosedür ismi : Deneme, A, B, c,d, isimsiz, Prg12, iyi, As5, Q3, m7m.....

 

1.       Prosedür isimleri arasinda bosluk olamaz. Yani prosedür isimleri bosluk içeremez.
Örnek : merhaba arkadaslar ,  deneme görevi,  Atatürk Baraji ....

2.       Prosedür isimleri en fazla 255 karakterden olusabilir. Yani prosedür isimlerinin uzunlugu 255’i geçemez.
Örnek :  abcdeeeeee................eeeee  (255 tane) - böyle bir prosedür ismi olamaz.

3.       Prosedür isimleri arasinda    :;,./’#][!”£$%^&*()   gibi karakterler kullanilamaz. Sadece _ (alt çizgi) isareti kullanabilir.
Örnek : word” , kelime[ , cumle* gibi prosedür isimleri olamaz,
fakat  bu_donem, doviz_burosu gibi prosedürler olabilir.

4.       Prosedür isimlerinin ilk karakteri mutlaka harf olmalidir, yani sayi veya “_” (alt çizgi) ile baslayan prosedür ismi olamaz.
Örnek : _hazir, _gidelim, 3otobus, 5yol gibi prosedür isimleri olamaz.
Fakat hazir_ , otobus3 gibi prosedür isimleri olabilir.

5.       Bir modülde veya formda birden fazla ayni isimde prosedür belirtilemez

6.       Prosedür isimleri arasinda büyük küçük harf ayrimi yoktur. Yani “DENEME” ile “DENeme” veya “denEME” vey “dEnEmE” ayni prosedüri belirtmektedir. Zaten bir prosedürü belirtirken , prosedüri nasil belirtiyorsak(büyük kücük harf bakimindan) bu prosedürü daha sonra da kullandimizda  Visual Basic bu prosedürü, hemem belirtildigi sekile otomatik olarak döndürür.
Yani biz “DeNeME” adiyla bir prosedür belirttikten sonra bunu “dENEme” sekliyle de kullansak Visual Basic onu hemen ilk belirtilme sekline çevirir.

 

 

Sub ile belirtebildigimiz prosedürlerin yaninda bir de “Function” olarak belirtebildigimiz prosedürler bulunmaktadir. Temel olarak “Sub” ile “Function” arasinda büyük fark yoktur. Biz bu farki ilerleyen bölümlerde ele alacagiz. “Function” ile belirtebildigimiz prosedürün belirtme asamasinda veya islem asamasinda “Sub” dan bir farki yoktur. Yani function; sub ile ayni sekilde belirtilir.

Function Okul()

 

End Function

 

Function da da; aynen sub da oldugu gibi bir baslangiç ve bitis bulunmaktadir ve yine aynen sub daki gibi bu prosedür çagrildiginda gerçeklesmesini istedigimiz olaylari asagida gördügümüz “......”  alanina yazariz.

 

 Örnegin;

 

Function Okul()

.................

End function

 

q       Tabiki function isimleri de prosedür ismi kurallarina uygun olmalidir.

 Objelerin olaylari

 

Her objenin mutlaka bir ismi vardir. Isimsiz bir obje olamaz. Tabi ki form ve modüllerinde isimleri vardir. Hemen hemen obje bir veya birden fazla (çogunlukla) olay içermektedir. Bu olaylar, kullanici programi kullanirken, objelere yapmis oldugu çesitli olaylardir. Örnek: Bir butona tiklatilmasi olayi, bir metin kutusuna yazi girilme olayi, bir onay kutusuna isaret koyma olayi.... gibi. Iste bu olaylarda her obje bu olay gerçeklestiginde yapilmasi istenen prosedürü otomatik olarak çagirir.

 

Yani; form üzerine yerlestirdigimiz bir butona, tiklatildiginda yapilmasini istedigimiz olayi belirli bir prosedüre yazariz. Butona tiklatildiginda, buton objesi; bu olayi otomatik olarak çagirir.

 Örnek olarak alacagimiz bir butona, tiklama (click) olayinda yani butona tiklatildiginda) “......” islemini (burada islem önemli degildir-bu yüzden “.....” seklinde ifade ettik) yapmasini istiyoruz. Objenin (yani butonun) ismi “buton1

Butona form üzerinde; çift tiklattigimizda,

 

Private Sub buton1_Click()

...

End Sub

 

          Private, daha sonra görecegimiz bir ifadedir. Bu yüzden “Private” anahtar kelimesini görmezden geliyoruz.

 

Sub buton1_Click()

...

End Sub

 

          Butonun ismi “buton1” oldugundan; biz butona çift tiklattigimizda, Visual Basic; tiklatilan objenin, varsayilan özelligini yani “tiklama ( click ) “ olayininin baslangiç ve bitisini otomatik olarak ekler ( yukarda göreüldüü gib) . Burda dikkat edilmesi gereken nokta ise; “_” alt çizgi isaretidir. Objenin ismi ile olayi arasinda mutlaka “_” altçizgi vardir.

 

Tabiki bir butonun tiklama (click) olayindan baska birçok olayi daha vardir. Örnegin: KeyPress (Tus Basimi), MouseMove(Imleçi buton üzerinde hareket ettirme), GotFoucs (Butonun aktif hale gelmesi) .... gibi. Bu ve bunun gibi birçok olayi ileride inceleyecegiz.

 

Bu kisimdan sonra yapilan bütün örnekler ve islemler “Deneme” adli sub prosedürü içine yazilacaktir. Siz bu prosedürü aynen yazip çagirmak için, hangi olay sonucunda gerçeklestirilmesini istiyorsaniz, o olaydan bu prosedürü çagirmaniz gerekecektir.

 Örnegin;  Size gösterdigimiz örnek bir kod’u aynen Visual Basic içine kopyalayip, çalistirabilirsiniz. Fakat; bu olayi yani deneme adli prosedürü çagirma islemini gerçeklestirmek için, örnegin bir butonun tiklama(click) olayina prosedür ismini yazarak çagirabilirsiniz.

 

Private Sub BenimButon1_Click

Deneme

End Sub

 

Sub Deneme

‘Islemler

End Sub

 

 “Form_Load” olayi

 

 YENI TANIM : Form_Load

 

          Bir form yüklendiginde; o formun “Form_Load” olayi çagrilir. Iste bu bölüm programinizin ilk baslangiç noktasidir. Yani ilk olarak (bazi istisnalar hariç) bu olay çagirilir. Örnegin, MS Word’ü açtiginizda, Word açilincaya kadar geçen (kisa da olsa) sürede, Word; kendi ayarlarini kullanici isimlerini, kisaltmalari, sablonlari ..... yükler. Sizde programlarinizda kayitlarinizi, ayarlarinizi ve bunun gibi olaylari yükleyebilirsiniz.

 

q       Önemli olan nokta ise, bildiginiz gibi objelerin olaylarinin çagrilacagi prosedürler,      [Obje ismi]_[Obje olayi] (buton1_Click) seklinde çagirilirlar. Ancak formun ismi ne olursa olsun, form’un load (yüklenme) olayinda Form1_Load, Fr3_Load, obj_Load seklinde olmaz, sadece ve sadece “Form_Load” seklinde olur. Çünkü bir formda tek bir form vardir ancak birçok obje olabilir.

 

Eger birden fazla form kullaniyorsaniz, hangi formun önce açilacagini ayarlamak için {Project} Menüsünden “[Proje Ismi] Properties” adli menü seçenegini tiklayin. Daha sonra “Startup Object” yazan yerin altindaki seçenek kutusundan, program açildiginda ilk olarak açilmasini istediginiz, formu seçiniz. En son olarak “OK” butonuna tiklayip bu pencereyi kapatiniz. Artik programi çalistirdiginizda, seçmis oldugunuz form açilacaktir.

 

 

 Önemli bir nokta...

 

Belirttigimiz gibi  “Visual Basic’te program kodlari sadece ve sadece prosdürlere yazilabilir”.  Yani  bir prosedür ancak ve ancak baska bir prosedur içinden çagirilir. Iste burada aklimizda bir  soru olusuyor. Eger bir prosedür’ü baska bir prosedür tarafindan cagiriyorsak, o prosedür’ü hangi prosedür çagiriyor?

 

Bu soruyu iki bölümde yanitlamak mümkündür.

1 – Bilindigi gibi; Visual Basic obje tabanli bir programlama yazilimidir. Bu nedenle program açilista bir pencere olusturup bunu görüntüler(tabi ki istege göre bu özellik devre disi birakilabilinir). Pencere açildiginda formda düzenledigimiz objelerin olaylarindan (örnegin; bir butonun tiklanmasi (buton1_Click gibi) veya bir yazi kutusuna yazinin girilmesi olayi) bu kodlari çagirabiliriz.
Örnek: Bir butona tiklayarak bir dosya silme islemi gerçeklestirebiliriz.
Veya; program ilk açildiginda, form’un yüklenmesi (yukarida bahsettigimiz “Form_Load” ifadesi) asamasinda yapmak istedigimiz olayi gerçeklestirebiliriz. Örnek: Program kayitlarini okuyabiliriz ve ayarlari bunlara göre düzenleyebiliriz.

2- Sub Main:

 

Eger Visual Basic’de obje tabanli bir proje yapmiyorsaniz o zaman hiç obje kullanmak gerekmeyebilir. Iste böyle durumlarda bir olayin bütün programin islemini veya islemlerini baslatmasi gerekmektedir. Bu yüzden, “Sub Main” adli ifadeyi kullanmak gerekir.Bu ifade aynin bir form’un yüklenme (load) olayi gibi program ilk açildiginda çalistirilir. Programi “Sub Main” ifadesiyle baslatmak için {Project} Menüsünden “[Proje Ismi] Properties” adli menü seçenegini tiklayin. Daha sonra “Startup Object” yazan yerin altindaki seçenek kutusundan, program açildiginda ilk olarak açilmasini istediginiz, formu seçiniz. En son olarak “OK” butonuna tiklayip bu pencereyi kapatiniz. Artik programi çalistirdiginizda, “Sub Main” ifadesi çalisacaktir.

 

 

 

q       Eger Windows tabanli ve obje görünümlü bir program yapiyorsaniz bu seçenegi seçmeyiniz.

 

 YENI TANIM : DEGISKEN

 

Visual Basic’te yapmis oldugunuz programlar içerisinde; degisken denilen ve program içinde kullandiginiz degerleri geçici veya sürekli olarak tutan kaliplar bulunmaktadir.

 Degiskenler; programlar hazirlarken kullandigimiz (anlik veya sürekli) veri degerlerini hafizada tutmaya yararlar. Nasil bir Word dosyasi; doküman içindeki yazilari, dökümanin ayarlarini .... içinde tutuyorsa, degiskenlerde belirtilen degerleri hafizada tutmaya yarar. Tabiki yine bu word dosyasini örnek alirsak; Word dosyasina yazip kaydettigimiz verileri degistirmek veya sonra onlardan bilgi almak mümkündür.

Degiskenlerde de veriyi daha sonra alma veya degerini degistirme mümkündür.

 

Bir degiskenin bir ismi ve bir degeri bulunmaktadir.
Matematikten bildigimiz gibi;


X = 3 + 4 / 2

 

... gibi bir esitlikte X bir degiskendir. Burada “X” degiskenin ismi “=” den sonraki kisimdan alinacak sonuçta; “X” degiskeninin degeri olacaktir. Yani bu ifade de “X” isimli bir degisken bulunmaktadir ve degeri 5’tir. Visual Basic’in matematikten nerdeyse hiçbir farki yoktur. Yani çogu matematik kurali Visual Basic’in de kuralidir.


 Örnegin; 

Bildiginiz gibi matematikte öncelik islem sirasi çarpmanin ve bölmenindir, iste bu yüzden yukarida ki ifade de “3 + 4 / 2” isleminde önce bölme islemi yapilir. Bu matematiksel bir kuraldir ve aynen Visual Basic’de de geçerlidir. Yani 3 + 4 islemini ilk önce yapip ta sonucu ikiye bölemeyiz. Öncelikle 4/2 isleminin sonucunu bulup sonra 3 degerine eklemeliyiz.

 Peki degiskenlerin görevi nedir, neden degisken kullaniriz?

 

Degiskenler belirttigimiz gibi bir degeri belirli bir süre (geçici veya sürekli olarak - geçici veya  sürekli olmasi belirlenebilir) hafizada tutmaya ve islemlerimizde bizlere yardimci olmaya yaramaktadir.

 

 Bir örnek vermek gerekirse;

 

Hotmail’den hesabiniz varsa; siz hotmail’in sayfasina girip e-mail hesabiniza girince Hotmail sizin kullanici isminizi hafizaya alir (cookie dosyasina kaydeder), yani bir degiskene sizin kullanici isminizi atar. Daha sonra siz baska bir Internet Explorer (veya herhangi bir browser) açinca ve hotmail’in sayfasina girdiginizde, hotmail kullanici isminizi otomatik olarak yazmis olur (cookie dosyasindaki degiskeni okuyarak) . Size sadece sifrenizi girerek onaylama butonuna basarak e-maillerinize ulasmak kalir.


 


UYGULAMA:
Simdi bunu bir uygulama ile açiklayalim;

Bilgisayarinizin IP adresi 212.12.34.56 olsun, ve hotmail kullanici hesabiniz ([email protected]) yani “deneme” olsun. Siz hotmail’de e-mail hesabiniza girince, hotmail bilgisayariniza bir cookie (çerez) dosyasi ekler ve bu dosya içine kullanici ismini yazar. Böylece bir sonraki açilista eger cookie dosyalari içinde hotmail’in cookie si varsa o zaman hotmail bu sayfayi görünür hale getirmeden otomatik olarak, kullanici ismi kismina bu dosyadan okuduüu degiskenin degerini yazar.
   Iste bu örnekte de gördügünüz gibi; degiskenler programlarda ve islemlerde bize yardimci olan ve kolaylik saglayan sistemlerdir.

  

   Baska bir örnek vermek gerekirse;

Windows’unuzu açtiginizda görmüs oldugunuz bütün ayarlar aslinda bir tür degiskendir. Örnek olarak; klavyenizin dili, ekranin çözünürlügü, bilgisayarin kullanici ismi....

 

 Bu bütün ayarlar bir tür degiskendir ve hem isimleri, hem de degerleri vardir. Aslinda her bir dosya bir degisken toplulugundan olusan bir gruptur diyebiliriz. Çünkü bir Word dokümaninda; bu dökümanin yazisi, sayfa numaralarinin olup olmadigi, resim olup olmadigi, dipnotun olup olmadigi ... gibi birçok degisken bu dosyanin içine kaydedilir. Daha sonra bu degiskenler dosyadan çagirilir. (Nasil çagirildigi veya nasil kaydedildigi bizim için önemli degil)

 

 Degisken kurallari:

 

Degiskenlerin isimleri asagidaki kurallara uydugu sürece hersey olabilir. Degiskenlerin degerleri, degisken türlerine göre belirli limitler alirlar ve belirli formatlarda kullanilirlar. Bu konuyu daha sonra görecegiz.

 

 Birkaç örnek degisken ismi : Deneme, A, B, c,d, isimsiz, bugün, iyi, As5, Q3, m7m.....

 

1.       Degisken isimleri arasinda bosluk olamaz. Yani degisken isimleri bosluk içeremez.
Örnek : merhaba arkadaslar ,  deneme görevi,  Atatürk Baraji ....

2.       Degisken isimleri en fazla 255 karakterden olusabilir. Yani degisken isimlerinin uzunlugu 255’i geçemez.
Örnek :  abcdeeeeee................eeeee  (255 tane) - böyle bir degisken ismi olamaz.

3.       Degisken isimleri arasinda    :;,./’#][!”£$%^&*()   gibi karakterler kullanilamaz. Sadece _ (alt cizgi) isareti kullanabilir.
Örnek : word” , kelime[ , cumle* gibi degisken isimleri olamaz,
fakat  bu_donem, doviz_burosu gibi degiskenler olabilir.
4.       Degisken isimlerinin ilk karakteri mutlaka harf olmalidir, yani sayi veya “_” (alt cizgi) ile baslayan degisken ismi olamaz.
Örnek : _hazir, _gidelim, 3otobus, 5yol gibi degisken isimleri olamaz.
Fakat hazir_ , otobus3 gibi degisken isimleri olabilir.

5.       Bir modulde veya formda veya prosedurde birden fazla ayni isimde degisken belirtilemez

6.       Degisken isimleri arasinda büyük küçük harf ayrimi yoktur. Yani “DENEME” ile “DENeme” veya “denEME” vey “dEnEmE” ayni degiskeni belirtmektedir. Zaten bir degiskeni belirtirken (Degisken belirtme) degiskeni nasil belirtiyorsak(büyük kücük harf bakimindan) bu degiskeni daha sonra da kullandimizda  Visual Basic bu degiskeni, hemem belirtildigi sekile otomatik olarak döndürür.
Yani biz “DeNeME” adiyla bir degisken belirttikten sonra bunu “dENEme” sekliyle de kullansak Visual Basic onu hemen ilk belirtilme sekline çevirir.

 

 

   
   
Cyber-Warrior TIM All Legal and illegal Rights Reserved.\CWDoktoray 2001©