Tekil Mesaj gösterimi
Alt 17 Mart 2007, 20:36   #4
Çevrimdışı
telNET
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: ASP Anlatımı (Dökümandır)




Next
Bu durumda For..Next döngüsü, Degisken1’in değerinin Degisken2’den yüksek olduğunu belirlerse, derhal döngüyü durdurarak, Next’ten sonraki satıra gidecektir.
Do döngüsünden ise Exit Do ile çıkababiliriz. Bu ifadenin kullanımı da Exit For gibi olur.
Süreçler (Prosedürler)
VBScript’te programın akış kontrolünde kullanacağınız bir diğer grup araç ise örneğin Javascript veya Perl’de fonksiyon dediğimiz gruplandırılmış ve isimlendirilmiş işlem kümeleridir. Bu kümeler programın bir yerinde topluca dururlar ve programın başka bir yerinden isimleriyle çağrılırlar; veya bu kümelere isimleriyle referans yapılır.
VBScript’te bu kümelenmiş kod gruplarına Prosedür (Süre&#231
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
denir. iki türlü olur: fonksiyon (Function) ve Subroutine (sab-rutin okunur; kısaca Sub diye yazılır ve sab diye okunur). Bu iki süreç arasındaki başlıca fark, fonksiyondan kendisini çağıran komuta daima bir değer döner; Sub’dan dönmeyebilir. Sub, yapacağı işi yapar ve programın kontrolünü kendine atıf yapılan noktaya devreder. VBScript’de bir programa farklı yerlerde sık sık aynı işi yaptırıyorsak, bunu bir Sub ile yaptırırız; fakat programımıza bir değer gerekiyorsa, bu değeri bir fonksiyona hesaplattırırız. Her ikisi de kendilerine atıfta bulunan veya kendilerini göreve çağıran satırdan (komuttan, deyimden) verilebilecek değerleri kabul edebilirler.
Biraz karışık oldu; ama bunu ilerde gerçek ASP uygulamaları yazarken daha iyi anlayacağız. Şimdilik bir iki noktayı öylece öğrenmeye bakalım. Bir fonksiyonun adı, tıpkı bir değişken adı gibi, fonksiyonun ürettiği değeri tutar; ve bu değer kendisini çağıran komuta verilir. Diyelim ki, programımızın çeşitli noktalarında yazı-tura atıp, elde edilecek sonuca göre bir iş yapmak zorundayız. Bu ihtiyacın doğduğu yerde, yazı-tura komutlarını yazabiliriz. Ancak bu ortaya çok uzun bir programın çıkmasına sebep olur. Oysa yazı-tura işlemlerini bir fonksiyonda toplar ve ihtiyaç halinde sadece bu fonksiyonu çağırırsak ve fonksiyon bize o anda yazı mı geldiğini, yoksa tura mı geldiğini bildirirse, işimiz çok kolaylaşmış olur.
Böyle bir fonksiyon, yukarıdaki örnekten hareketle, şöyle olabilir:
<%
Function YaziTura
Dim ParaAt
Randomize
ParaAt = Int(Rnd * 2) + 1
If ParaAt = 1 Then
YaziTura = “Yazı”
Else
YaziTura = “Tura”
End If
End Function
%>
Bu fonksiyonu, ASP programının herhangi bir yerinden, ş&#246;yle bir y&#246;ntemle &#231;ağırabilir; ve vereceği sonucu programın akışına uygun şekilde kullanabilirsiniz:
<%
NeGeldi = YaziTura
Response.Write NeGeldi
%>
Fonksiyonun sonunda End Function ifadesinin bulunduğuna ve fonksiyonun elde ettiği sonucu kendi adına atadığımıza dikkat edin. DIM ifadesiyle b&#246;yle bir değişken tanımlamadığımız halde VBScript, fonksiyonu &#231;ağırdığınız anda bunu kendiliğinden yapacaktır.
Aynı işlemi Subroutine (Sub) olarak yazabiliriz. Fakat bu kez Sub, elde edeceği değeri kendisi kullanacak ve bittiği anda kontrol programa geri d&#246;necektir:
<%
Sub YaziTura()
Dim ParaAt
Randomize
ParaAt = Int(Rnd * 2) + 1
If ParaAt = 1 Then
Response.Write “Yazı”
Else
Response.Write “Tura”
End If
End Sub
%>
Fonksiyon adlarının sonuna, bizden beklediği değer varsa onları belirleyen değişken adlarını parantez i&#231;inde yazarız. Fonksiyon bizden bir değer beklemiyorsa a&#231;ılan kapanan (boş) parantezlere ihtiya&#231; yoktur. ancak bir &#231;ok VBScript programcısı bunu adet edinmiştir.
Sub’ların &#231;ağrılması, fonksiyondan farklıdır. Sub’ın icra edilmesini istediğiniz noktaya sadece adını yazarız. Sub’lar işleyebilmek i&#231;in bizden değer bekliyorsa, bu değerleri Sub adının yanına, parantez i&#231;ine almadan ve virg&#252;lle ayırarak, yazarız. &#214;rneğin, Hesapla isimli ve bizden iki değer bekleyen bir Sub ş&#246;yle &#231;ağrılır:
Hesapla 10, 20
Bu Sub işini bitirdiği anda programın akışı, Sub’a atıf yaptığımız noktada devam eder.
Sık Kullanacağımız Hazır Fonksiyonlar
VBScript’te kullanabileceğimiz bir iki hazır-fonksiyona yukarıda değindik. Tesad&#252;f&#238; sayı &#252;reten Rnd() fonksiyonu bunlardan biriydi; ayrıca Int() fonksiyonu ile kesirli bir sayının tam b&#246;l&#252;m&#252;n&#252; alabildiğimizi g&#246;rd&#252;k. VBScript’in kullanılmaya hazır daha bir &#231;ok fonksiyonu vardır; ancak ASP uygulamalarında sık kullanacağımız ve &#246;zellikle metin d&#252;zenlemeye ait olan bir ka&#231;ını burada sıralayalım.
Tarih ve saat
Belki de Web’in zamana &#231;ok bağlı oluşu dolayısıyla, Visual Basic’in hemen hemen b&#252;t&#252;n zaman-tarih fonksiyonları VBScript’te de kullanılır.
Date: Bug&#252;n tarihini verir. (25.03.2000 gibi)
Time: O andaki saati verir. (22:24:40 gibi)
Now: O andaki tarih ve saati birlikte verir. (25.03.2000 22:24:40 gibi)
VBScript’in buna ek olarak Weekday (haftanın g&#252;n&#252
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.
, WeekdayName (g&#252;n&#252;n adı) ve Monthname (ayın adı) fonksiyonları da vardır. Bu fonksiyonlar değerlerini Date fonksiyonuna g&#246;re alırlar. &#214;rneğin,
<%= WeekdayName(Weekday(Date))%>
komutu bize bug&#252;n Cumartesi ise “Cumartesi” değerini verir.
<%= MonthName(Month(Date))%>
komutu bize bu ay Mart ise “Mart” değerini verir. VBScript’in bunlara ek olarak Day (g&#252;n), Month (ay) ve Year (yıl) fonksiyonları da değerlerini Date fonksiyonundan alarak, size bir rakam verirler. Eğer tarih 25 Mart 2000 ise:
<%= Day(Date)%>... 25
<%= Month(Date)%>... 3
<%= Year(Date)%>... 2000
değerini verir. VBScript, bu değerleri doğruca işletim sisteminden alır. Dolayısıyla işletim sisteminin b&#246;lgesel ayarları T&#252;rkiye i&#231;in yapılmışsa, g&#252;n adları T&#252;rk&#231;e olarak d&#246;necektir. Ayrıca, tarih ve saat bi&#231;imleri de b&#246;lgesel ayarlara bağlı olarak, ay &#246;nde, g&#252;n arkada veya tersi, saat de 12 saat veya 24 saat esasına g&#246;re d&#246;ner. ASP programlarınızı kişisel Web Server’da denerken kendi bilgisayarınızın tarih ve saatini; ger&#231;ek Internet’te &#231;alıştırırken Server’ın tarih ve saatini alırsınız. Sayfalarınızda ay ve g&#252;n adlarını T&#252;rk&#231;e g&#246;r&#252;nt&#252;lemek i&#231;in, &#246;nce Server’ın b&#246;lgesel ayarlarını sınamanız ve eğer isimler T&#252;rk&#231;e gelmiyorsa, bunları &#231;eviren Sub’lar veya fonksiyonlar yazmanız gerekebilir.
Karakter-dizisi D&#252;zenleme
Karakter-dizisi veya String, VBScript i&#231;in herşey olabilir. “Sana Sevdanın Yolları Bana Kurşunlar” bir String’dir. “Bug&#252;n 7 Ağustos 2000” bir String’dir. “Doğum G&#252;n&#252;n Kutlu Olsun!” bir String’dir. Web sitemizi ziyaret eden kişinin formlarımıza yazacağı ve G&#246;nder tuşunu tıklayarak Server’a g&#246;ndereceği bilgiler String’dir. Fakat bunların hepsi olduğu şekliyle işimize yaramaz. Bunları yeniden d&#252;zenlemek, i&#231;inden se&#231;meler yapmak veya bi&#231;imlerini değiştirmek gerekebilir. VBScript bu ama&#231;la kullanılmaya hazır bir dizi fonksiyon verir:
InStr Uzun bir String’in i&#231;inde vereceğiniz daha kısa bir String’in bulunup bulunmadığını arar; bulursa bu kısa String’in başlama noktasının değerini verir. Diyelim ki, “Sana Sevdanın Yolları Bana Kurşunlar” String’ini Kayahan değişkenine, “Sevda” kelimesini de Ara değişkenine atadınız. InStr fonksiyonu ile Ara’nın değerinin yerini Kayahan’ın değerinin i&#231;inde bulabilirsiniz:
Yer = InStr(Kayahan, Ara)
Yer’in değeri 6 olacaktır; &#231;&#252;nk&#252; “Sevda” kelimesi, uzun String’de 6’ncı karakterden başlamaktatır.
Len Bir String’in uzunluğunu belirler. Yukarıdaki &#246;rnekte yer alan Kayahan değişkenin uzunluğunu ş&#246;yle belirleyebiliriz:
Uzunluk = Len(Kayahan)
Uzunluk değişkeninin değeri 36 olacaktır.
UCase Vereceğiniz bir String’in t&#252;m karakterlerini b&#252;y&#252;k harfe &#231;evirir.
YeniString = UCase(Kayahan)
Yeni String’in değeri: “SANA SEVDANIN YOLLARI BANA KURŞUNLAR” olacaktır.
LCase Vereceğiniz bir String’in t&#252;m karakterlerini k&#252;&#231;&#252;k harfe &#231;evirir.
YeniString = LCase(Kayahan)
Yeni String’in değeri: “sana sevdanın yolları bana kurşunlar” olacaktır.
LTrim, RTrim, Trim Verdiğiniz String’in (sırasıyla) solunda yani baş tarafında; sağında yani sonunda ve hem başında ve hem de sonundaki boşlukları temizler.
Space İ&#231;inde, vereceğiniz sayı kadar boşluk olan boş bir String oluşturur. &#214;rneğin
Bosluk = Space(20)
Bosluk değişkenin değeri “ “ (20 boşluk) olacaktır.
String İstediğiniz sayıda ve istediğiniz bir karakterle bir String oluşturur.
YeniString = String(3, “*”)
YeniString değişkeninin değeri “***” olacaktır.
Left, Right Bir String’in i&#231;inde soldan (baştan) veya sağdan (sondan) verdiğiniz sayıya kadar olan karakterleri verir. &#214;rneğin, yine yukarıdaki Kayahan değişkenini kullanırsak:
Solda = Left(Kayahan, 4)
Solda değişkeninin değeri “Sana” olacaktır; &#231;&#252;nk&#252; Kayahan değişkeninin soldan itibaren d&#246;rt harfi “Sana“ kelimesine denk geliyor.
Mid Bir String’in i&#231;inde başlangı&#231; noktasını ve karakter olarak boyunu verdiğiniz alanda yer alan String’i verir.
Ortada = Mid(Kayahan, 5, 8)
Ortada değişkeninin değeri “Sevdanı” olacaktır; &#231;&#252;nk&#252; Kayahan değişkeninin soldan 5’nci değişkeninden itibaren 8 karakterlik alanda “Sevdanı” karakterleri yer alıyor.
Dizi-Değişken (Array) Fonksiyonu
VBScript’in dizi-değişken oluşturmada Array() fonksiyonu ile sağladığı kolaylıklara kısaca değindik. Fakat Array ile daha bir &#231;ok iş yapabiliriz; ve dizi değişken oluşturmakta VBScript’in diğer bazı kolaylıklarından yararlanabiliriz. Dizi-değişkenler, &#246;zellikle Web ziyaret&#231;ilerimizden gelecek bilgilerin kaydedilmesinde; veritabanından &#231;ekeceğimiz verilerin kullanılır hale getirilmesinde yararlı bir ara&#231;tır. Dolayısıyla ASP sayfalarınızda sık sık &#231;ok-boyutlu dizi değişkenlerden yararlanacaksınız. Bunun i&#231;in gerekli ara&#231;ları kısaca ve topluca ele almamız yerinde olur.
Bir dizi değişken oluştururken, değişkenin eleman sayısını belirtmezsek, VBScript, kendi kendine “Anlaşılan bu diziyi dinamik yapmamı istiyorlar!” der; ve daha sonra elemanlarının değerleri sonradan belirtilebilecek ve eleman sayısı sonradan arttırılabilecek bir dinamik dizi-değişken oluşturur. (“VBScript iyi huyludur,” demiş miydim?) &#214;rnek:
Dim Ogrenciler()
Bu komutla, Ogrenciler dizi-değişkeni oluşturulur; ancak eleman sayısı belirtilmediği i&#231;in dizi dinamiktir; yani daha sonra bu dizinin eleman sayını belirleyebilirsiniz. Bunu:
ReDim Ogrenciler(15)
gibi bir komutla yapabiliriz. Şimdi aklınıza şu soru gelebilir: Peki neden Ogrenciler dizisini baştan eleman sayısını belirterek tanımlamıyoruz? G&#252;zel soru! Cevabı şu olabilir mi? Dizi-değişkenimizin eleman sayısını hen&#252;z bilmiyoruz; ve programın akışı i&#231;inde bu sayı, başka bir fonksiyonun, Sub’ın veya kullanıcı girdisinin sonucu olarak belirlenebilir. Fakat hemen belirtmek gereken bir nokta var: ReDim komutu, mevcut bir dizi-değişkenin i&#231;indeki herşeyi siler! Mevcut dizinin elemanlarını ve onların değerlerini korumak istiyorsak:
ReDim Preserve Ogrenciler(20)
yazmamız gerekir. Buradaki Preserve (koru) komutu, VBScript’e mevcut dizi i&#231;indeki elemanları korumasını, ve eleman sayısını 20’ye &#231;ıkartmasını bildirir. Buna neden gerek olabilir? Ziyaret&#231;inin tercihleri değişebilir; &#246;rneğin bir elektronik alışveriş sitesinde ziyaret&#231;iniz yeni şeyler alabilir; daha &#246;nceki alışverişlerine ilişkin verileri tuttuğunuz dizi-değişkenin eleman sayısını, daha &#246;nceki bilgileri silmeden arttırmanız gerekir.
VBScript’in dizi-değişkenlerini t&#252;m&#252; aynı adı taşıyan bir liste olarak d&#252;ş&#252;nebilirsiniz; sadece değişken adının yanında dizinin ka&#231;ıncı elemanı olduğunu belirten sayı bulunur:
Ogrenciler(1): Necip
Ogrenciler(2): Serap
Ogrenciler(3): Neslihan
Fakat VBScript &#231;ok boyutlu dizi değişken de oluşturabilir. İki boyutlu dizi-değişkeni tablo gibi d&#252;ş&#252;n&#252;n; dizinin elemanları aynı adı taşıyan değişkenler fakat bu kez sadece tek sayı değil sıra ve s&#252;tun numaraları ile belirleniyorlar:
Ogrenciler(1,1): Necip
Ogrenciler(1,2): Serap
Ogrenciler(1,3): Neslihan
Ogrenciler(2,1): Selim
Ogrenciler(2,2): Murat
Ogrenciler(2,3): Merve
Ogrenciler(3,1): Elif
Ogrenciler(3,2); Hande
Ogrenciler(3,3): Leyla
Şimdi, burada &#252;&#231; sıralı, &#252;&#231; s&#252;tunlu bir tablo getirebilirsiniz g&#246;z&#252;n&#252;z&#252;n &#246;n&#252;ne. Bu dizi-değişkeni şu komutla oluşturabiliriz:
Dim Ogrenciler(3,3)
B&#246;yle bir değişkende s&#246;zgelimi birinci sıra (numarası 1,x olanlar) &#231;alışkanları, ikinci sıradakiler (2,x’ler) daha az &#231;alışkanları vs., belirtebilir. VBScript, &#252;&#231;, d&#246;rt ve hatta beş boyutlu dizi-değişken oluşturur. Ama bunu nerede kullanacağınızı siz kararlaştırabilirsiniz.
Bir dizi-değişkenin herhangi bir elemanın değerini, programın herhangi bir aşamasında değiştirebilirsiniz:
Ogrenciler(3,2) = “Caner”
komutu, Hande’nin adını siler ve yerine Caner’in adını yazar.
Dizi-değişkenlerimizin eleman sayısını bilmek isteyebiliriz. Kimi zaman dizi-değişkenlerimizin eleman sayısı biz belirlemeyiz; bu bilgi bir formdan gelebilir; bir veritabanından alınabilir; fakat mesela bir d&#246;ng&#252; i&#231;in bu değişkenin ka&#231; elemanı olduğunu bilmek gerekir. &#214;rneğin elimizde 35 elemanı olan Ogrenciler dizi-değişkeni varsa, bu sayıyı
ElemanSayisi = UBound(Ogrenciler)
komutu ile ElemanSayisi değişkenine yazdırırız. ElemanSayisi’nin değeri bu durumda 35 olacaktır.
Test Fonksiyonları
VBScript’te kullandığımız bazı değişkenlerin o andaki durumu, programımızın akışını kontrolde kullanacağımız bilgiyi sağlayabilir. S&#246;zgelimi bir değişkenin değeri boş ise, ziyaret&#231;imizin formu tam olarak doldurmadığını d&#252;ş&#252;nebiliriz. VBScript, bize değişkenlerin durumunu sınamamız i&#231;in bazı &#246;zel fonksiyonlar sağlar. Bu &#246;zel fonksiyonlardan d&#246;nen değer True (doğru) veya False (yanlış) olur; doğru sonucun değeri –1, yanlış sonucun değeri ise 0’dır:
IsArray Bir değişkenin dizi-değişken (Array) olup olmadığını sınar.
IsDate Bir değişkenin değerinin tarihe (Date) &#231;evrilip &#231;evrilemeyeceğini sınar.
IsEmpty Bir değişkenin tanımlanıp değer atanmış olup olmadığını sınar.
IsNull Bir değişkenin ge&#231;erli bir değer tutup tutmadığını sınar.
IsNumeric Bir değişkenin sayı olarak işleme tabi tutup tutulamayacağını sınar
IsObject Bir ifadenin ge&#231;erli bir ActiveX veya OLE nesnesine referansta bulunup bulunmadığını sınar.
TypeName Bir değişkenin t&#252;r&#252;n&#252; belirtir.
VarType Bir değişkenin t&#252;r&#252;n&#252; belirten sayıyı verir.
***
Şimdi ASP i&#231;in gerekli VBScript bilgisi bu kadar değil tabi&#238;. Ama bu, işe başlamamız i&#231;in yeter. İlerde yeni VBScript komutları, veya fonksiyonları ile karşılaşırsak (ki size garanti ederim, karşılaşacağınızı!) onları orada kısaca ele alırız. Ama yukarıdaki VBScript bilgisi, her zaman lazım!

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları eglen sohbet sohbet