Tek İleti Göster
Eski 09.06.2007   #3 (permalink)
staticiation
 
Katılma Tarihi: Şub 2006
Nereden: Bursa/es-es
Yaş: 23
Mesajlar: 1,780
Varsayılan

MID
Bir string içerisinde belirli bir aralığı kopyalamak istediğimizde kullanabileceğimiz fonksiyon Mid fonksiyonudur. Genel kullanımı:
Mid(String , nereden_baslanacak , kaç_karakter_kopyalanacak) şeklindedir.
Bir örnek vererek daha iyi açıklamaya çalışalım.
test="Buradanekadarçokinsanvarmış"
sonuc=Mid(test,7,10)
response.write sonuc
test içersinde yer alan test="Buradanekadarçokinsanvarmış" text içerisinde 7. ci karakterden başlamak üzere toplam 10 karakter kopyalanarak sonuc adlı değişkene atanıyor sonuc değişkenin değeri ise "nekadarçok" şeklinde oluyor ve response.write kullanılarak sonuc ekrana (html data stream içerisine ekleniyor) yazdırılıyor.

INSTR
Instr fonksiyonu kullanılarak bir string dizisi içerisinde yer alan bir karakterin nerede yer aldığını (kaçıncı karakter olduğunu) bulmak mümkündür. Aşağıdaki örnek incelenirse Instrt fonksiyonunun kullanımı daha iyi anlaşılabilir.
strtext="HowLong"
karakter_nerede=Instr(strtext,"Long")
strtext değişkenine "HowLong" değeri atanmış ve instr fonksiyonu kullanılarak bu text içerisinde yer aldı düşünülen "Long" un nerede başladığı bilgisi karakter_nerede adlı değişkene atanmıştır. Burada karakter_nerede değişkeninin değer 4 olacaktır çünkü "Long" strtext içerisinde 4. cü karakterden itibaren başlamaktadır. Eğer aranılan text veya karakter bulunamaz ise Instr fonksiyoınu 0 değerini geri döndürür.

LTRIM, TRIM VE TRIM
Bu üç fonksiyon verilen bir textin sağında, solunda veya hem sağında hem de solunda kalan boşlukların atılmasını sağlamak için kullanılan fonksiyonlardır. Her üç fonksiyonda sadece tek bir parametre alırlar ki buda boşlukların kaldırılmak istenildiği text in tam kendisidir.
Ltrim textin solunda bulunan tüm boşlukları, Rtrim textin sağında bulunan boşlukları Trim ise textin hem sağında hemde solunda bulunan boşlukları çıkarmak için kullanılan bir fonksiyondur.

REPLACE
Gayet faydalı bir fonksiyondur. Uzun bir metin içerisindeki belirlediğiniz ifadeyi başka ifadeyle değiştirmenizi sağlar.

Söz dizimi: REPLACE(string, değişecek_olan, yerine_konulacak, başlangıç_indexi, değişiklik_sayısı, karşılaştırmakodu)

Parametreler:

String: İçinde değişiklik yapacağımız metindir.

Değişecek_olan: Metin içinde değiştirmek istediğimiz alt-dizgi (sub-string) dir.

Yerine_konulacak: Belirtilen alt-dizginin yerine konulacak ifadedir.

Başlangıç_indexi: Değiştirme işleminin, stringin kaçıncı karakterinden başlayacağıdır.

Varsayılan: 1

Değişiklik_sayısı: Çok açık. -1 yazılırsa bulunan tüm alt-dizgiler değiştirilir.

karşılaştırmakodu: VBTextCompare için 1, VBBinaryCompare için 0 yazılabilir.

Varsayılan 0.

Replace fonksiyonu şu şekilde de işlev yapar. REPLACE(string, değişecek, yerinekonulacak). Ancak fonksiyonun daha verimli kullanılabilmesi için tüm parametlerinin belirtilmesi gerekir. Örnekleri inceleyin, anlayacaksınız.

Örnek:

Dim mystr
mystr = "Ağır ağır çıkacaksın bu merdivenlerden"
Response.write replace(mystr, "Ağır", "Hızlı", 1, -1, 0)
' sayfaya "Hızlı ağır çıkacaksın bu merdivenlerden" yazar.
Response.write replace(mystr, "Ağır", "Hızlı", 1, -1, 1)
' sayfaya "Hızlı Hızlı çıkacaksın bu merdivenlerden" yazar.
Response.write replace(mystr, "a", "A", 1, -1, 1)
' sayfaya "Ağır Ağır çıkAcAksın bu merdivenlerden" yazar.
Response.write replace(mystr, "a", "A", 1, 2, 1)
' sayfaya "Ağır Ağır çıkacaksın bu merdivenlerden" yazar.
Replace fonksiyonu bir çok yerde yardımımıza yetişir. Örneğin bir formdan alınan içerikte yer alması muhtelemel istenmeyen ifadelerin ayıklanması sağlanabilir. HTML taglerinin kullanılması önlenebilir. Ve daha bir çok yerde REPLACE size büyük fayda sağlayacaktır.

STRING FONKSİYONU
VBScript ten yine evlere şenlik bir fonksiyon. Belirtilen sayıda karakterin tekrarını içeren string oluşturuyor.

Örnek:
Response.write STRING(5, "*") ' sayfaya "*****" yazar

SPLIT FONKSİYONU

Bir metinden belirlenmiş ayraçlar (delimiter) vasıtasıyla belirtilen sayıda alt-dizgi içeren 0 tabanlı, tek boyutlu dizi üretir.

Sözdizimi: SPLIT(ifade, ayraç, sayi, karşılaştırmakodu).
(Sayi yerine -1 yazılırsa tüm belirlenen tüm alt-dizgiler işleme tabi tutulur.)
Ne iş yaptığını anlamak için örnek yapalım.

Örnek:
Dim mystr, dizi(3)
mystr = "EvcilASP|Türkiye nin|ASP Bostanı"
dizi = SPLIT(mystr, "|", -1, 1)
Reponse.Write dizi(0) ' sayfaya "EvcilASP" yazar
Reponse.Write dizi(1) ' sayfaya "Türkiye nin" yazar
Reponse.Write dizi(2) ' sayfaya "ASP Bostanı" yazar

JOIN FONKSİYONU
Split fonksiyonuna göre zır işlemi yapar. Bir dizinin elemanlarını belirtilen ayraç ile birleştirip bir string üretir.

Sözdizimi: JOIN(ifade, ayraç)

Örnek:
Dim dizi(3), str, str2
dizi(0) = "Ben"
dizi(1) = "Sekizinci"
dizi(2) = "Henri"
str = JOIN(mystr, "|")
str2 = JOIN(mystr, " ")
Reponse.Write str ' sayfaya "Ben|Sekizinci|Henri" yazar
Reponse.Write str2 ' sayfaya "Ben Sekizinci Henri" yazar


MANTIKSAL İFADELER

İf - Then
VBScript'in vereceğiniz bir durumun bulunup bulunmadığını sınamasını sağlar. Genel yazım kuralı şöyledir:
If şart Then
[şart doğru ise yapılacak işler]
Else
[şart doğru değilse yapılacak işler]
End If

İf...then yapısının en son ve geniş kullanımı ise Elseif yapısı ile birden fazla şart içeren durumlardır.
<%
if method= "Faks" then
Response.Write "Lütfen Faks numaranızı giriniz "
Elseif method= "Email" then
Response.Write "Lütfen E-mail adresinizi giriniz"
Elseif method= "Telefon" then
Response.Write "Lütfen telefon numaranızı giriniz"
Else
Response.Write "Herhangi bir bilgi iletilmeyecektir"
End if
%>








Select Case

Olasılık sayısı artan daha karmaşık bir yapıda if...then yapısı karmaşık bir çözüm olacaktır. Böyle durumlarda Select...Case yapısı daha uygun bir çözüm olarak kullanılır . Aşağıda verilen örneğe göz atalım:
<%
Select Case Secim
Case "Faks"
Response.Write "Lütfen Faks numaranızı giriniz"
Case "Telefon"
Response.Write "Lütfen telefon numaranızı giriniz"
Case "E-mail"
Response.Write "Lütfen e-mail adresinizi giriniz"
End Select
%>

DÖNGÜLER

For..Next döngüsü
Programın bir işi belirli kere yapmasını istiyorsak, ona yapacağı işi bir sayaç değişkeniyle birlikte, For döngüsüyle bildiririz:
For sayaç = başlangıç To son Step adım
...yapılacak işler...
Next

While...Wend
Ne var ki, program mantığı bazen bize böyle açık ve seçik bir sayaç kurma imkanı vermez. Sayaç olarak kullanacağımız değer, programın başka bir bölümü tarafından üretiliyor olabilir. Veya bu değer ziyaretçi tarafından belirlenmiş olabilir. Özetle yapılmasını arzu ettiğimiz işin ancak sayaç bir değerden azsa, çoksa veya eşitse yapılmasını, bu durum değişirse durmasını isteyebiliriz. Bunu While (..iken) komutuyla yapabiliriz. While döngüsünü kullandığımız zaman sayacı bizim arttırmamız gerekir. Sözgelimi, yukarıdaki programın 7 günün tümünü ekrana yazmasını değil de, mesela gün sayısı 5'den küçük ise yazmasını istiyor olabiliriz. Bu durumda kodumuzda For.. Next arasında kalan bölümde şu değişikliği yapabiliriz:
While sayac <= 5
Response.Write Gunler(sayac)
Response.Write "<BR>"
sayac = sayac + 1
wend








Do..Loop
Do (Yap) komutu ile kuracağımız döngüler iki ayrı türde olabilir: bu döngü ile bir dizi komutu, bir koşul doğru iken veya doğru oluncaya kadar yaptırabiliriz. Bu yöntemlerden her biri iki ayrı şekilde yazılabilir. Bir koşul doğru iken bazı işlerin biteviye yapılmasını istiyorsak, Do While yöntemini kullanırız:
Do While koşul
koşul doğru iken yapılacak işler
Loop
Bu ifade ile VBScript koşul doğru olduğu sürece istediğimiz işi yapacaktır. Buradaki Loop kelimesi, döngünün başa dönmesini sağlar. Bu yöntemden şu şekilde de yararlanabiliriz:
Do
koşul doğru iken yapılacak işler
Loop While koşul
Burada, Loop komutu şartın hâlâ doğru olup olmadığını sınar ve doğru ise verilen işleri yapar; artık değilse bir sonraki satıra geçer. Döngünün bir şart gerçekleşinceye kadar bir işi yapmasını ise Do Until yöntemiyle sağlarız. Bu durumda döngü şöyle yazılır:
Do Until koşul
koşul gerçekleşinceye kadar yapılacak işler
Loop
Bu ifade ile VBScript koşul doğru oluncaya kadar istediğimiz işi yapacaktır. Buradaki Loop kelimesi, döngünün başa dönmesini sağlar. Bu yöntemden şu şekilde de yararlanabiliriz:
Do
koşul gerçekleşinceye kadar yapılacak işler
Loop Until koşul


For Each... Next
For...Next kullanımının özel bir türüdür. Bir dizi veya koleksiyon içerisinde kullanılır. (Koleksiyon nedir ? Daha detaylı olarak anlatılacaktır. ) For döngüsü dizi veya koleksiyon içerisinde kalan eleman sayısı kadar gerçekleştirilir. Aşağıda ki örneği inceleyebilirsiniz.
<%
Dim eleman
Dim sehirler(2)
sehirler(0)="Ankara"
sehirler(1)="İstanbul"
sehirler(2)="Ordu"
For Each eleman In sehirler
Response.Write eleman & "<BR>"
Next
%>

Kod Nasıl Çalışır ?
Döngü şehirler dizisi içerisinde yer alan her eleman ( Şehir için, her dizi elemanı ) için tekrarlanır. Eleman (şehir ) sayısı 3 olduğuna göre döngü 3 defa tekrarlanacak ve ekrana dizinin içerisinde yer alan elemanlar yazılacaktır


Döngüyü durdurmak isterseniz
Bir döngüden belirlediğiniz koşul gerçekleşsin-gerçekleşmesin çıkmanız gerekebilir. Bunu bir başka değişkendeki değişiklik zorunlu kılabilir. Bir döngüden çıkmak için Exit (çık) ifadesini kullanabilirsiniz. Bu ifade, döngünün yaptığı işler arasında, genellikle bir If deyimi ile birlikte yer alır. Örneğin:
For sayac = 1 to 10
[..bir takım işler yap..]
If Degisken1 > Degisken 2 Then Exit For
[..bir takım işlere devam et..]
Next



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ç) 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, şöyle bir yöntemle ç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öyle bir değişken tanımlamadığımız halde VBScript, fonksiyonu ç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önecektir:
Argümanli;
<%
Sub prosedürün_ismi (arguman1, arguman2, .. , argumanN)
' kodlar, kodlar, kodlar...
End Sub
%>

argümansız;

<%
Sub yildirim_gursesin_anisina()
Response.write "leylaklar dökülür, güller ağlasın"
End Sub
%>
Fonksiyon adlarının sonuna, bizden beklediği değer varsa onları belirleyen değişken adlarını parantez içinde yazarız. Fonksiyon bizden bir değer beklemiyorsa açılan kapanan (boş) parantezlere ihtiyaç yoktur. ancak bir çok VBScript programcısı bunu adet edinmiştir. Sub'ların çağrılması, fonksiyondan farklıdır. Sub'ın icra edilmesini istediğiniz noktaya sadece adını yazarız. Sub'lar işleyebilmek için bizden değer bekliyorsa, bu değerleri Sub adının yanına, parantez içine almadan ve virgülle ayırarak, yazarız. Örneğin, Hesapla isimli ve bizden iki değer bekleyen bir Sub şöyle çağrılır:
Argümanlı sub işletimi
<%
' tercih 1
Call prosedur_ismi ( arguman1, arguman2, .. , argumanN )
' tercih 2
prosedur_ismi arguman1, arguman2, .. , argumanN
%>
staticiation Şuanda Forumda Değil   Alıntı yaparak cevapla