Root > Documents > Web Güvenlik Açıkları > VB Article 1
Cyber-Warrior.Org \ Doküman \ Web Güvenlik Açıkları > VB Article 1
Madde
  Yazar : Abuzer
  Date : 23.11.2004 16:16:30
 
# VB Article 1
 

Merhaba Direk Konuya gireyim.

 

Visual basic ‘de internet uygulamalari için en çok kullandigim Dönglüler, degiskenler, Functionlar i anlatmayi düsünüyorum. Sanirim bilmeyen arkadaslarin da bir internet uygulamasi ile  baslamak isteyecegini düsünüyorum. Bunun için Birkaç temel bilgiyi anlatayim öncelikle. Bu yazim umarim bir seri haline gelir. Ve bu Serinin Ilk’i. J

 

Öncelikle Birkaç Temel seyle baslayalim,

 

Len  Lentgh(genislik) anlamindadir. Bir degiskenin yada yazinin kaç karakter oldugunu sayar.

 

Örnek Kullanimi:

 

A = Len(“Bu Bir Denemedir”)

Yukarida A esittir “Bu Bir Denemedir” Yazisinin Genisligine uzunluguna karakter sayisina demektir.

 

Bu durumda A Ne olur ? Sayalim. “Bu Bir Denemedir”  A nin degeri 16 dir. Ama 14 karakter var. Aslinda dogru olani ise 16 dir. Dikkat edilmesi Gereken Husus ise Bosluklar da bir karakter dir.

 

Left  Degiskenin Soldan Alinmak istenen Karekteri için kullanilir.

 

A = Left(“Bu Bir Denemedir”,3)  dikkat edin Önce degiskeni verdik, Ardindan ise”,” isareti ve kaç karakter aldirmak istiyor isek Virgül den sonra yazip parantezi kapatiyoruz. Burada A =  Ne olur ? “Bu “ Olur dikkat ederseniz 3 dedik,  Ama 2 karakter aldi, üçüncü karakter bostur. “Bu “

 

Right Degiskenin Sagindan Alinmak istenen karakter için kullanilir.

A = Right(“Bu Bir denemedir”,3)  Burada ise a nin degeri Sagdanilk üç karakter dir. Yani

a = “dir”

 

 

Mid Degiskenin ne sagindan ne de solundan yani farz edelimki degiskenimiz “Bu Bir Denemedir” olsun ve biz “Bu ” dan sonraki yeri almak istiyor isek kullaniriz.

 

A = Mid(“Bu Bir Denemedir”,1 , 5 ) Burada Iki sayi girmemizin sebebi Degiskenimizin Hangi karakterinden baslayip Hangi karakterine Kadar olan yerini belirlemek içindir.

A’nin degeri ise “Bu Bi” oldu. Bosluklara dikkat edin.

 

Msgbox Mesaj kutusu

 

Örnek kullanimi :
Msgbox (“Bu bir Denemedir”) Bu bize içinde Bu Bir denemedir yazan Mesaj kutusu gösterir.

Msgbox Mid(“Bu Bir Denemedir”,1 , 5 ) Bu ise Bize Içinde “Bu Bi” yazan mesaj kutusu gösteriri.

 

 


Simdi IF Kosuluna bakalim

 

If kosul Then
buraya kosul tutuyor ise yapilmasini istediginiz seyleri yaziyorsunuz

End if

 

Seklinde kullanilir. Örnek verecek olur isek

 

If a = “Bu Bi” Then ’Eger a Bu Bi ye denk ise

Msgbox  “A BU BI dir” ‘ Mesaj kutusunda “A Bu Bi dir.” Yaz
End if ‘ Eger Bitti

 

Yukarida ki örnegi iyi inceleyin. If in sözlük anlami Eger dir.

Baska bir örnek ile de gösterelim

 

If a < 10 then ‘ eger A  10 dan küçük ise

Msgbox “ 10 dan küçük bir sayi” ‘ Mesaj kutusunda “10 dan küçük bir sayi yaz”

Else ‘ degilse yani a < 10 degil ise

Msgbox “10 Dan büyük bir sayi” ‘ Mesaj kutusunda 10 dan büyük bir sayi yaz

End if ‘ Bitti

 

 

Umarim anlamissinizdir.  Çünkü Yukaridakiler en temel bilgilerdir. Asagida Biraz daha gelismis halini yapacagiz.

 

 

Vb de bos Bir standart form Açin.  Ve iki tane Textbox , ekleyin. Ardindan formun Code kismina gelin. ( Sagla Tiklayip View Code deyin.) Ve üst  de bulunan iki açilir menü den ilkini Form  ikincisini ise Load a ayarlayin. Ekranda asagidaki yazi belirecektir. Ve siz imleci iki satir arasindaki bir bosluga getirin.

 

Private Sub Form_Load()

 

End Sub

 

Ve sunu yazin.

 

Private Sub Form_Load()

 

If text1 = text2 Then  ‘ Text1 ile text2 bir birine denk ise

Msgbox (“Text1 ile text2 ayni”) ‘mesaj kutusunda aynidir yazisisini yaz

End if ‘kosul bitti

 

End Sub

 

Sonra F5 e basarak Çalistirin. Hiçbir mesaj vermedi ? Neden ? Çünkü text1 text2 ile ayni degil. Içerisinde yazanlar farkli. Ozaman su sekilde yazalim. Gene Private Sub Form _Load() kismina yaziyoruz. Nedeni ise form açilirken( program açilirken). Yapilmasini istedigimiz için. Dilerseniz Private sbu Form_unload() a yazarsaniz. Program kanirken yapacaktir bu islemi.

Private Sub Form_Load()

 

If text1 = text2 Then  ‘ Text1 ile text2 bir birine denk ise

Msgbox (“Text1 ile text2 ayni”) ‘mesaj kutusunda aynidir yazisisini yaz

Else
Msgbox (“iki yazi da birbirinden  farklidir”)

End if ‘kosul bitti

End Sub

 

Yukarida sadece Else ekledik. Sebebi Yazdigimiz kod sadece iki kutu bir birine denk ise msjkutusu açiyordu. Else diyerek bir birine nedk degil se de bir katu açtirip içine diledigimiz seyi yazdirabiliriz.

 

Simdi Baska bir Kosul ile Anlatmayi deneyeyim.

 

Private Sub Form_Load()

 

If Len(text1) = Len(text2) Then  Text1 ile text2 nin karakter sayilari bir birine denk ise

Msgbox (“Karakter Sayilari Esit”) ‘mesaj kutusunda aynidir yazisisini yaz

Else
Msgbox (“iki yazinin karakter sayilari birbirinden  farklidir”)

End if ‘kosul bitti

 

End Sub

 

Simdi De Ilk karakterleri ayni ise Istedigimizi yaptirmayi deneyelim.

 

Private Sub Form_Load()

 

If Left(text1,1) = Left(text2,1) Then  Text1 ile text2 nin ilk karakterleri ayni ise

Msgbox Left(text1,1) & “  Ilk karakterdir.” ‘ilk karakteri kutula

Else ‘ degil ise
Msgbox “text1 in ilk karakteri ” Left(text1,1)   & “dir” & “ text2 nin ilk karakteri” & Left(text2,1) & “dir.” ‘ Karakterleri Göster

End if ‘kosul bitti

 

End Sub

 

Devami yakinda….

 

 


Tekrardan Merhaba Bir önceki konuda unutmusum yazmayi,

 

Val (Value(Deger)) degiskenin Sayisal degerini alir.

 

Mesela Text Kutumuzda 15a12 yaziyor. Sayisal degerini alalim

 

Msgbox Val(text1)  dedigimiz zaman bize sadece 15 i verir.

Yada bir deger okuturken bunu degisken yapmak hem kodu uzatir hemde bellekte fazla yer kaplar.

Örnegin Regeditten Bi akyit okuyazagiz ama bu nu önce degiskene atip sonra kullanmak uzun sürer ve kasar. Onun yerine Val komutu ile degisken tanimlamamiza  gerek kalmadan isimizi

görürüz. Veya kullanici Sayi yazmasi gereken yere Harf yazar Val(“deneme”)  seklinde ise Degerimiz 0 olur.

 

Int Integer Tamsayi, girilen degerin Tamsayisini alir. Örnek,

 

MsgBox Int("15,499")  Küsürati siler ve sonuç 15 olur,

 

 

 

Select Case

ilk makalemde If ile kosullamayi anlatmistim.simdi ise daha kolay bir kosulama anlatacagim.

 

Örnek problem  : 1 ile 100 arasi bir sayi Girilsin 1-20 arasi için zayif 20 – 40 arasi icin kotu 40 – 60 arasi için geçer, 60 – 80 arasi iyi, 80 -100 arasi icin ise Pekiyi olan bir Kosul kuralim.

 

Problemi nasil cozeriz, once sayiyi bulmamiz lazim sonra da karsilastirmamiz lazim.

 

Eger if kosulu ile yapmis olsaydik

 

Dim sayi  as byte ‘ sayi adinda bir degisken tanimladim ama türü byte olacak sekilde, Byte Türü 0 ile 255 e kadardir. 256 yazilirsa Buffer overfollow hatasi veririr.

 

Sayi = val(text1) ‘ tanimladigim Sayi degiskenine  Text1 e girilen degeri atadim

 

If sayi > 0 and sayi < 20 then

Msgbox “Sonuç zayif”

End if

If sayi >20 and sayi < 40 then

Msgbox “Sonuç Kötü”

End if

If sayi >40 and sayi < 60 then

Msgbox “Sonuç Geçer”

End if

If sayi >60 and  sayi  < 80 then

Msgbox “Sonuç iyi”

End if

If sayi >80 and  sayi  < 100 then

Msgbox “Sonuç Pekiyi”

End if

 

Gördügünüz gibi Baya bir uzun sürüyor, sadece 5 kosul yaptik oysa , Düsünsenize Ya 100 kosul kullanacak olsaydik .

 

Simdi Case Olayini ile nasil yapacagiz onu anlatayim.

 

Private Sub Form_Load()

 

Select Case Val(Text1) ‘ Case e Text1 in degerini aldiriyoruz ve artik case imizi text1 in degeri olarak düsünebilirsiniz.

Case 0 To 20: MsgBox "ZAYIF"  ‘Case 0 – 20 arasi ise yazimizi yazdiriyoruz

Case 20 To 40: MsgBox "kötü"

Case 40 To 60: MsgBox "Geçer"

Case 60 To 80: MsgBox "Iyi"

Case 80 To 100: MsgBox "iyi"

End Select                                   ‘ Seçimimizi bitiriyoruz

End Sub

 

Bu Kadar bir kod ile isimiz bitiyor, If aslinda Daha güzeldir ama Çok fazla kosul kullanacak iseniz Case i tercih etmelisiniz.

 

Baska bir Case Örnegi

 

Select Case Text1

Case "Text1": MsgBox "Yazimiz Text1 dir"

Case "Deneme": MsgBox "Yazimiz Denemedir."

Case "": MsgBox "Yazimiz bostur."

End Select

 

.

Select Case Seçim

Case “denkse” : yapilacak islem

Case 0 to 50 : yapilacak islem

Case > 100  : yapilacak islem

End Select

Gibi kosullari çogaltabiliriz.

 

Bu makale de Son Olarakda Projelerimizde Bir Programi Çalistirmakdan bahsedelim. Bir programi çalistirmak için Shell komutu Kullanilir. Örnek olarak asagiya bakabilirsniz.

 

Dim calistir

Calistir = Shell(“c:\windows\notepad.exe”)

 

Yada
calistir = shell(“c:\windows\notepad.exe c:\io.sys”)  ‘notepad a  io.sys açtirir.

Windows Xp de busekilde Çalismiyor J basima geldi oradan biliyorum onda ise

 

Call Shell(“c:\windows\notepad.exe c:\io.sys”)

Seklinde Kullanabilirsiniz.

Tekrardan Kolay Gelsin… Devami Yakinda….

 

 

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