Ders: Token identifiers/tanımları.
Tarih: Hatırlamıyorum.
Yazan: L4roXyL - (Hasan AYDENİZ)

-

mIRC Scripting'in kodlama dilinin yapı taşları olan;
Token identifier'larını ele alıcağız.
Bu identifier'lar mIRC Scripting ile uğraşıcaksanız;
Veya daha iyi kod yazmak istiyorsanız oğrenmeniz gereken onemli bilgilerdir.

-

İlk oncelikle, bu identifier'ları kullanmak icin bazı bilgilere ihtiyacımız var.
Bir karakterin, ascii numarasını oğrenmek icin; $asc(karakter)
Orneğin; //echo -a $asc(a) yaptığımızda; 97 sayısını vericektir.
Bu 97 sayısı a harf'inin ascii numarasıdır.

Ascii rakam'ını karakter'e cevirme.
Şimdi yukarıda godruğunuz gibi $asc identifier'ı ile bir karakterin ascii numarasını oğrenebildik.
Şimdi bu ascii numarayı karakter'e cevirmek icin; $chr(ascii-numarası)
Orneğin; //echo -a $chr(97) yaptığınızda, "a" olarak cevap gelicektir.
Yani mantık olarak $asc identifier'ının tam tersini yapmakta.

Bu bilgileri en başta verdim, cunki token identifier'larında işinizi fazlası ile yarıyacaktır.
Ve token identifier'larına başlıyalım.

-

1- $addtok(yazı,token,C)

Buradaki C ust tarafta verdiğimiz bilgilerden, bir karakterin $asc(karakter) ile aldığımız ascii sayısıdır.Bu identifier; yazı olan kısıma token yazan yere yazılıcak veriyi eklemenizi sağlar.Ve bu ekleme işlemini text yazısının sonuna ekler.Orneğin; //echo -a $addtok(1 2 3 4 5,6,32)
Yaptığımızda; "1 2 3 4 5 6" olarak donecektir.
Gorduğunuz gibi 6 sayısını en sona ekledi.
Buradaki 32 eklenicek 6 rakam'ının başına gelecek ascii karakter rakamıdır.
32 boşluk(space)'un ascii sayısıdır.
Yani 32 yerine 46(.) yazsaydık "1 2 3 4 5.6" şeklinde cevap alırdık.
$addtokcs(Case sensitive): $addtokcs şeklinde kullandığınız zaman buyuk kucuk duyarlı olarak ekleme yapar.


2- $deltok(text,N-N2,C)

Bu identifier text olan yerdeki herhangi bir veya birden fazla karakter'i silmek icin kullanılır.
N kısmı numara oluyor. N2 kısmı ise numara 2 oluyor anlaşıldığı gibi.
Şimdi ornek verince daha iyi anlıyacaksınız.
Orneğin; a.b.c.4.d diye bir text'imiz var.
Biz buradaki 4 rakam'ını silmek istiyoruz bunun icin, ilk once 4 rakam'ının kacıncı sırada olduğuna bakalım.
a(1.)b(2.)c(3.)4(4.)d(5) Gorduğunuz gibi 4. sırada.
//echo -a $deltok(a.b.c.4.d,4,46) yaptığımızda; a.b.c.d olarak donecektir.
Buradaki 46 nokta(.) karakterinin ascii numarası oluyor.
Ayrıca N2 diye belirtilen kısım ise şu şekilde oluyor.
Mesela a.b.c.d.e.f.g diye bir text var ve;
Siz bu text'in ilk 3(a.b.c) karakterini birden silmek istiyorsunuz, yapmanız gereken;
//echo -a $deltok(a.b.c.d.e.f.g,1-3,46)
Yaptığınızda; d.e.f.g olarak donecektir. Buradaki "1-3" 1. harf'den 3. harfe kadar sil demek oluyor.


3- $findtok(text,token,N,C)

Bu identifier text icinde varolan yazıdaki;
N(sıra) numarası ile aratılacak karakterin(token) kacıncı sırada olduğunu belirtir.
Buradaki token; Sıra numarası aranıcak karakter.
N: Rakam girilecektir. Orneklerle daha iyi anlıyacaksınız.
C: Bildiğiniz gibi ascii numarasıdır.
Orneğin; 1.2.3.4.5 diye bir text mevcut.
Biz burada 2 rakam'ının kacıncı sırada olduğunu oğrenmek istiyoruz.
//echo -a $findtok(1.2.3.4.5,2,1,46) yaptığımızda; 2 cevabını alırız.
Gorduğunuz gibi 2 rakam'ı 2. sırada olduğu icin 2 olarak dondu.
Gayet basit bir identifier'dır. $findtokcs olarak'da kullanılabilir.
Bildiğiniz gibi cs(case sensitive) buyuk kucuk duyarlı oluyor.


4- $gettok(text,N,C)

Bu identifier tabiri caiz'se, mIRC Scripting'de en gozde olan token'dir.
Yani bu cumlemden anlıyacağınız gibi, en cok kullanılan;
En cok kullanıldığına gore o kadar'da işe yarıyan bir identifier'dır.
Bu identifier text kısmında'ki yazıyı ayırabilmemizi sağlar.
N: Bildiğiniz uzere sıra numarasıdır.
C: Yine bildiğiniz gibi ascii numarasıdır.
Orneğin; text1 text2 text3 diye bir yazımız var. Ve biz bu yazıdaki text2 kısmını almak istiyoruz;
//echo -a $gettok(text1 text2 text3,2,32) yaptığımızda; text2 olarak cevap gelicektir.
Buradaki 2 alıcağımız verinin sıra numarası, 32 ise boşluk karakter ascii numarası.
Bu identifier gercekten cok kullanışlıdır. Bir kac ornek gostermek istiyorum.
Orneğin; ders.dersler.derslerimiz.dersleriniz şeklinde bir text'imiz var.
Bir burada ders kelimesi haric hepsini almak istiyoruz;
//echo -a $gettok(ders.dersler.derslerimiz.dersleriniz,2-,46)
Yaptığımızda; dersler.derslerimiz.dersleriniz cevabını alırız.
2- numarasındaki mana, 2. kelime ve sonrasını ayır demektir.


5- $instok(text,token,N,C)

Bu identifier text kısmında yazılı olan verilere token(veri) eklemek icin kullanılır..
Buradaki token; eklenicek veridir.
N: Eklenicek verinin sıra numarasıdır.
C: Bildiğiniz uzere ascii numarası oluyor.
Orneğin; ders1|ders2|ders4|ders5 dite bir text'imiz mevcut.
Ve biz bu text'in 3. sırasına ders3 kelimesini(token) eklemek istiyoruz.
//echo -a $instok(ders1|ders2|ders4|ders5,ders3,3,124)
Yaptığımızda; ders1|ders2|ders3|ders4|ders5 olarak donecektir.
Yani gorduğunuz gibi ders2 kelimesinin onune ders3 kelimesini ekledik.
Buradaki 124 "|" karakterinin ascii numarasıdır.
Eğer text'in icinde ayrac olarak varolmayan bir karakter numarası girseydik;
ders3 kelimesini text'in en sonuna ekliyecekti.
Orneğin; //echo -a $instok(ders1|ders2|ders4|ders5,ders3,3,64)
Yaptığımızda; ders1|ders2|ders4|ders5@ders3 olarak donecektir.


6- $istok(text,token,C)

Bu identifier'ın kullanımı gayet basittir.
Token kısmına yazılan veri, text kısmında bulunuyorsa $true olarak donecektir.
Orneğin; //echo -a $istok(ders ders1 ders2,ders,32)
Yaptığımızda, cevap $true olarak donecektir.
Buradaki donen cevap $true; Onaylandı manasına gelir.
Eğer cevap $false olarak donerse, onaylanmaz. Dolayısı ile donmez.


7- $matchtok(tokens,string,N,C)

Bu identifier tokens kısmındaki veride girilen string'i arar ve kac adet bulunduğu rakam ve kullanıma gore belirtir
Buradaki tokens; aranılacak text oluyor.
String ise aranılacak veri oluyor.
N: Bildiğimiz gibi sıra numarası olarak calışır.
C: Herdefasında belittiğimiz gibi ascii numarasıdır.
Orneğin; //echo -a $matchtok(bu dersleri okuyun,e,0,32) yaptığımızda; 2 olarak donecektir.
Gorduğunuz gibi icerisinde e bulunan kelime dersleri oluyor.
Yani; //echo -a $matchtok(bu dersleri okuyun,e,1,32) yaptığımızda; dersleri cevabını alırız.
İcerisinde e bulunan kelime "dersleri"
Duruma gore kullanışlı bir token identifier'ıdır.
Buyuk kucuk duyarlı olarak işlem yapmak icin her zamanki gibi identifier sonuna cs ekliyoruz; $matchtokcs


8- $numtok(text,C)

Bu identifier'da gayet basittir.
Mantığı şu oluyor; text icerisindeki veride C kısmına yazılan karakter'den kac adet var ise rakam olarak belitir.
Yani orneğin; //echo -a $numtok(a;b;c;d;e;,59) yaptığımızda, "5" cevabını alırız.
Buradaki C: Girilen asci numarası oluyor. ";" karakterinin ascii numarası 59'dur.
Yani ascii numarası 59 olan 5 katakter iceriyormuş text'imiz.


9- $puttok(text,token,N,C)

Aslında bu identifier $instok identifier'ı ile neredeyse aynıdır.
Yalnız bu identifier'daki fark $instok gibi veriyi belirtilen yerin onune eklemez.
Yani eklenilen verinin yerini siler.
Orneğin; //echo -a $puttok(1.2.3.4.5,15,2,46) yaptığımızda; 1.15.3.4.5 olarak donecektir.
Gorduğunuz gibi $instok identifier'ındaki gibi verinin onune eklemedi. Eklenilen sıra numarasındaki veriyi sildi.
Ve onun yerine belirtilen "15" sayısını ekledi.
N: Sıra numarası oluyor. Yani eklenilecek veriyi hangisi sıraya koyacağınızı belirliyorsunuz.
C: Bildiğiniz gibi ascii numarası oluyor. Verdiğimiz ornekte;
Sıra numarası olarak 2 girdik. Token olarak 15 yazdık. Asci numarası olarak 46(Nokta".") kullandık.


10- $remtok(text,token,N,C)

Aslında bu identifier'ın işlevi $remove ile aynıdır.
Fakat bu identifier'da sıra numarası belirliyebilmek, gayet kolaylık sağlıyor.
Buradaki text: İcinden veri silnecek yazı olmaktadır.
Token: Text icerisinde silinecek veri oluyor.
N: Bildiğiiz gibi sıra numarası. Yani hangi bolumden silinecek bunu belirliyoruz.
C: Bildiğimiz gibi ascii numarası oluyor.
Orneğin; //echo -a $remtok(a&b&c&d,a,1,38) yaptığımızda; b&c&d cevabını alırız.
Yani burada belirtmek istediğimiz;
text icerisinde 1. sıradaki a verisini ascii numarası belirterek silmek.
Ascii numarası belirtmemizin sebebi, silinecek verinin onundeki karakterin diğerleri ile aynı olmasıdır.
Eğer farklı bir ascii numarası belirtirsek, herhangi bir silme işlevi yapamayacaktır.


11- $reptok(text,token,new,N,C)

Bu token identifier'ı ise $replace ile aynı gorevi gormektedir. Fakat yine sıra numarası belirleyebildiğimiz icin;
Buyuk bir ayrıcalık tanımaktadır.
Buradaki text: İcerisinden veri değiştirilecek yazı oluyor.
Token: Değiştirilecek veri oluyor.
New: Değişen verinin yerine gelecek replay verisi oluyor.
N: Sıra numarası olmaktadır.
C: Bildiğimiz gibi ascii numarasıdır.
Orneğin; //echo -a $reptok(ders1.ders2.ders3.ders4,ders4,ders6,1,46)
Yaptığımızda; ders1.ders2.ders3.ders6 cevabını alırız.
Şimdi bunu acıklıyalım;
Verilerin aralarında "." olduğu icin ascii numarasını 46 yaptık.
Token olarak text icerisindeki replay edilmesi istediğimiz veriyi belirttik.(ders4)
Replay edilmesi gereken kelimesi belirledik.(ders6)
Ve sonuc olarak; ders1.ders2.ders3.ders6 cevabını almış olduk.
Bu token identifier'ında cs(case sensitive) kullanabiliyoruz.($reptokcs)
Biliyorsunuz'ki "cs" buyuk kucuk duyarlılığı aktif kılacaktır.


12- $sorttok(text,C,ncra)

Bu token identifier'ı ise text kısmına yazılan verinin farklı yollar ile sıralanmasına/dizilmesine olanak tanır.
Parametreleri tanıyalım;
n: Text icerisindeki verileri en kucuk'den buyuğe doğru okutacaktır.
Orneğin; //echo -a $sorttok(1.3.6.7.5.9,46,n)
Yaptığımızda; 1.3.5.6.7.9 cevabını alırız. Yani kucukten buyuğe doğru sıralar.
c: Bu paramtre cok ozel'dir. text icerisindeki, kanal prefix'lerini(+,%,@,&) yetki sıralamasına gore gosterir.
En yuksek yetkiden, en duşuk yetkiye doğru.
Orneğin; //echo -a $sorttok([email protected]&ders.%ders,46,c)
Yaptığınızda; &[email protected]%ders.+ders cevabını alırız.
Gorduğunuz gibi yetki sıralaması en yuksekten, alcağa doğru olmuştur.
a: Bu paramtre text icerisindeki verileri, alfabetik sıralamayla gosterir.
Orneğin; //echo -a $sorttok(a c b f d l k,32,a)
Yaptığınızda; a b c d f k l cevabını alırız. Gorduğunuz gibi alfabetik sıralam yapılmış.
r: Bu parametre, text icerisindeki sıralamyı ters olarak gosterecektir.
Mesela;
//echo -a $sorttok(email protected&ders.%ders,46,c)
Yaptığınızda, &email protected%ders.+ders cevabını alırken;
//echo -a $sorttok(email protected&ders.%ders,46,cr)
Yaptığınızda; +ders.%email protected&ders cevabını alırsınız.
Yani r parametresi dizilim ayarlarını tersine cevirir.
Son olarak belirtmek istiyorum, $sorttok identifier'ında cs(case sensitive) kullanabilirsiniz.($sorttokcs)
Bildiğiniz gibi buyuk/kucuk harf duyarlılığı icin kullanılmaktadır.


13- $wildtok(token,wildstring,N,C)

Aslında bu identifier adından'da belli olduğu gibi wilcard kullanılan bir token'dir.
Benzerlik olarak $matchtok identifier'ı ile bir uyumluluğu vardır.
Ama $wildtok identifier'ında wildcard(s) kullanabiliyoruz.
Wildcards: "*" "?" karakterleridir.
Wildcard acıklaması; Orneğin ders kelimesini ele alalım.
* Karakterini ders kelimesinin başında kullanırsak(*ders);
ders kelimesi ile biten kelimeler manasına gelir.
* Karakterini ders kelimesinin sonunda kullanırsak(ders*);
ders kelimesi ile başlıyan kelimeler manasına gelir.
* Karakterini ders kelimesinin hem başında hem'de sonunda kullanırsak(*ders);
icerisinde ders kelimesi gecen kelimeler manasına gelir.
? Karakteri ise, bilinmeyen karakter yerine kullanılır. Orneğin; der?ler gibi.
Bu bilgilerden yola cıkarak $wildtok identifier'ı hakkında bilgi sahibi olalım.
Token: İcerisinde wildcard kullanılmış string(veri) aranılacak text.
Wildstring: Wildcards kullanılmış text oluyor.
N: Sıra numarası oluyor bildiğiniz gibi.
C: Ascii karakteri oluyor yine bidliğiniz gibi.
Orneğin; //echo -a $wildtok(dersin sonuna geldik biliyorsunuz değilmi?,*i*,0,32) yaptığınızda; 4 cevabını alırız.
Yani icerisinde i harfi gecen 4 adet kelime varmış bu cumlede.
Eğer; //echo -a $wildtok(dersin sonuna geldik biliyorsunuz değilmi?,*i*,1,32) yaparsak;
İcerisinde i harfi gecen 1. kelimeyi okutur. Bu kelimede; dersin oluyor.
Eğer; //echo -a $wildtok(dersin sonuna geldik biliyorsunuz değilmi?,*i*,2,32) yaparsak;
İcerisinde i harfi gecen 2. kelimeyi okutur. Bu kelimede; geldik oluyor.
Eğer; //echo -a $wildtok(dersin sonuna geldik biliyorsunuz değilmi?,*i*,3,32) yaparsak;
İcerisinde i harfi gecen 3. kelimeyi okutur. Bu kelimede; biliyorsunuz oluyor.
Eğer; //echo -a $wildtok(dersin sonuna geldik biliyorsunuz değilmi?,*i*,4,32) yaparsak;
İcerisinde i harfi gecen 4. kelimeyi okutur. Bu kelimede; değilmi? oluyor.
Yani soldan sağa doğru okunmakta token identifier'larında bunu unutmayın.
Son bilgi olarak; $wildtok identifier'ında cs(case sensitive) kullanabilirsiniz.
Bildiğiniz gibi buyuk/kucuk harf duyarlılığı icin kullanılmaktadır.($wildtokcs)

-

Dersimiz burada sona ermiştir.
Umarım işinize yarıyacak bilgiler verebilmişimdir.