IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası

IRCForumları - IRC ve mIRC Kullanıcılarının Buluşma Noktası (https://www.ircforumlari.net/)
-   mIRC Scripting Sorunları (https://www.ircforumlari.net/mirc-scripting-sorunlari/)
-   -   veriables problemi (https://www.ircforumlari.net/mirc-scripting-sorunlari/39627-veriables-problemi.html)

pestpest 18 Ekim 2007 10:58

veriables problemi
 
öncelikle herkese selamlar

elimde geniş bi veriables listesi var

%a 1
%b 2
%c 3

gibi yapmaya calistiğim şey bunların arasındaki en yüksek olan sayılı değişkeni ilk olarak listelemek bu konuyla ilgil fikri olan varmı

örneğin /listele dediğimde

%c 3 %b 2 %a 1 gibi

L4roXyL 18 Ekim 2007 15:57

Cevap: veriables problemi
 
Şimdi bunu yapmanın mantığı şudur;
İlk öncelikle kullanmamız gereken; $var identifier'ı.
$var(*,0) identifier'ı ile, tüm veriable'leri while yardımı ile okutursun.
Bunun için; $var(*,%while-loop'u) şeklinde yaparsın.
Sonra; $($var*,%while*loop'u),2) kayıtlı olan veriable'nin değerini verir.
Ama bu değer sayı değil, harf'de olabilir.
Yani ne bilim; %x değeri pestpest diye bir kelimeye'de atanmış olabilir.
Bunun için $regex kullanarak değer kısmında harf olup olmadığını kontrol edersin;
!$regex($($var(*,%1),2),/[a-z]/g) (Burada eğer, değer kısmında harf geçmiyorsa diyoruz)
Ve ek olarak; değer kısmında sadece rakam geçenleri baza alalım diyoruz;
$regex($($var(*,%1),2),/[1-9]/g) (Değer kısmında rakam bulunuyorsa diyoruz)
Buraya kadar herşey tamam.
Ama bu alias'ı yaparken while kullandığımız için, while'a atadığımız değer ve eşitlenmesi gereken değer sayı olduğu için, komut sonunda gözükecektir.
Bunun için while ile döngü yaptığımız değer'leri ayırıyoruz;
!$istok(%1 %2,$var(*,%1),32) (Eğer %1 %2 değerleri veriablele'lar içinde yoksa diyoruz)
Sonra bunların hepsini $addtok identifier'ı ile yan yana diziyoruz;
var %= = $addtok(%=,$+($var(*,%1),½,$($var(*,%1),2)),32)
While sonunda; $sorttok identifier'ı ile değer'leri en yüksekten en alçağa doğru okutuyoruz.
Bunun içinde $sorttok identifier'ında "nr" parametresini kullanıyoruz.

Yani kısacası kod şöyle oluyor;

alias listele { var %1 = 1,%2 = $var(*,0) | while %1 <= %2 { if $regex($($var(*,%1),2),/[1-9]/g) && !$regex($($var(*,%1),2),/[a-z]/g) { if !$istok(%1 %2,$var(*,%1),32) { var %= = $addtok(%=,$+($var(*,%1),½,$($var(*,%1),2)),32) } } | inc %1 } | echo -a $replace($sorttok(%=,189,nr),$chr(189),$chr(32)) }

/listele yapman yeterli olacaktır.
Umarım anlamışsındır, açıklayıcı bir şekilde anlattım.

CanCeL 18 Ekim 2007 16:01

Cevap: veriables problemi
 
Paylaşım diye buna denir ;oki

pestpest 18 Ekim 2007 19:28

Yanıt: Cevap: veriables problemi
 
Alıntı:

L4roXyL Nickli Üyeden Alıntı (Mesaj 274526)
Şimdi bunu yapmanın mantığı şudur;
İlk öncelikle kullanmamız gereken; $var identifier'ı.
$var(*,0) identifier'ı ile, tüm veriable'leri while yardımı ile okutursun.
Bunun için; $var(*,%while-loop'u) şeklinde yaparsın.
Sonra; $($var*,%while*loop'u),2) kayıtlı olan veriable'nin değerini verir.
Ama bu değer sayı değil, harf'de olabilir.
Yani ne bilim; %x değeri pestpest diye bir kelimeye'de atanmış olabilir.
Bunun için $regex kullanarak değer kısmında harf olup olmadığını kontrol edersin;
!$regex($($var(*,%1),2),/[a-z]/g) (Burada eğer, değer kısmında harf geçmiyorsa diyoruz)
Ve ek olarak; değer kısmında sadece rakam geçenleri baza alalım diyoruz;
$regex($($var(*,%1),2),/[1-9]/g) (Değer kısmında rakam bulunuyorsa diyoruz)
Buraya kadar herşey tamam.
Ama bu alias'ı yaparken while kullandığımız için, while'a atadığımız değer ve eşitlenmesi gereken değer sayı olduğu için, komut sonunda gözükecektir.
Bunun için while ile döngü yaptığımız değer'leri ayırıyoruz;
!$istok(%1 %2,$var(*,%1),32) (Eğer %1 %2 değerleri veriablele'lar içinde yoksa diyoruz)
Sonra bunların hepsini $addtok identifier'ı ile yan yana diziyoruz;
var %= = $addtok(%=,$+($var(*,%1),½,$($var(*,%1),2)),32)
While sonunda; $sorttok identifier'ı ile değer'leri en yüksekten en alçağa doğru okutuyoruz.
Bunun içinde $sorttok identifier'ında "nr" parametresini kullanıyoruz.

Yani kısacası kod şöyle oluyor;

alias listele { var %1 = 1,%2 = $var(*,0) | while %1 <= %2 { if $regex($($var(*,%1),2),/[1-9]/g) && !$regex($($var(*,%1),2),/[a-z]/g) { if !$istok(%1 %2,$var(*,%1),32) { var %= = $addtok(%=,$+($var(*,%1),½,$($var(*,%1),2)),32) } } | inc %1 } | echo -a $replace($sorttok(%=,189,nr),$chr(189),$chr(32)) }

/listele yapman yeterli olacaktır.
Umarım anlamışsındır, açıklayıcı bir şekilde anlattım.

ilgin için teşekkürler
fakat;

veriables listemde sadece
%bir 1
%iki 2
%uc 3
bulunuyor.

dediğin aliası direk olarak kopyaladım.
komutu denediğimde karşıma çıkan şey bu

4 %= 4 %birr 1 %2 1 %2 1 %1 %1

L4roXyL 18 Ekim 2007 22:17

Cevap: veriables problemi
 
alias listele { set %1 1 | set %2 $var(*,0) | while %1 <= %2 { if $regex($($var(*,%1),2),/[1-9]/g) && !$regex($($var(*,%1),2),/[a-z]/g) { var %= = $addtok(%=,$+($var(*,%1),½,$($var(*,%1),2)),32) } | inc %1 } | unset %1 %2 | echo -a $replace(%=,$chr(189),$chr(32)) }

Bu şekilde while döngüsünde'ki veriable'leri göstermiyecektir.
Fakat $sorttok kullanıp numaraları en büyükten küçüğe okutamaya kalktığımızda, değer'ler ile değer'lere ait veriable'lerin sırası karışıyor.
Ama yapmaya calışacağım, şuan'da çıkmam lazım.
Gelince ilgileneceğim.


Tüm Zamanlar GMT +3 Olarak Ayarlanmış. Şuanki Zaman: 07:15.

Powered by vBulletin® Version 3.8.11
Copyright ©2000 - 2025, vBulletin Solutions, Inc.
Search Engine Friendly URLs by vBSEO
Copyright ©2004 - 2025 IRCForumlari.Net Sparhawk