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

 Kayıt ol  Topluluk
2Beğeni(ler)
  • 1 Post By JohnGalt
  • 1 Post By Med Cezir

Yeni Konu aç Cevapla
 
LinkBack Seçenekler Stil
Alt 02 Mart 2013, 22:05   #1
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Hash Tablo Görüntüleyici/Düzenleyici




Selam,

Hash tablo ile çalışırken bir çok zaman hangi tablom aktif, hangisinde hangi parçalar ya da veriler var diye bakmam gerektiğinde yazdığım bir diyalogdu. Biraz daha düzenleyip bir kaç yeni özellik de ekleyerek paylaşmak istedim. Hash tablolar ile haşır neşir olanlar için epey kullanışlı olacağına inanıyorum.

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
menu status,channel,query { - Hash Tabloları: dialog $iif(!$dialog(hash_table),-m hash_table,-v) hash_table } dialog hash_table { title "Hash Tablo Görüntüleyici/Düzenleyici" size -1 -1 245 165 option dbu box "Tablolar:", 1, 5 5 75 110 list 4, 10 15 65 85, size extsel hsbar button "Seçilenleri Sil", 16, 25 102 35 10 box "Parçalar:", 2, 85 5 75 110 list 5, 90 15 65 85, size extsel hsbar button "Seçilenleri Sil", 17, 105 102 35 10 box "Veriler:", 3, 165 5 75 110 list 6, 170 15 65 85, size extsel hsbar button "Seçilenleri Sil", 18, 185 102 35 10 box "", 7, 5 115 235 45 text - Düzenlemeyi istediğiniz değere listeden çift tıklayın. $crlf $+ - Bağımsız eklemek için 'Temizle' butonuna basın., 8, 10 142 180 14, disable text "Tablo:", 9, 11 122 25 8 edit "", 12, 10 130 60 10, autohs text "Parça:", 10, 71 122 25 8 edit "", 13, 70 130 60 10, autohs text "Veri:", 11, 131 122 25 8 edit "", 14, 130 130 60 10, autohs button "Ekle/Düzenle", 15, 195 125 40 12 button "Temizle", 20, 195 141 40 12 } alias -l hash_tablo { did -r hash_table 4,5,6 | var %x = 1 | while $hget(%x) { did -az hash_table 4 $hget(%x) | inc %x } | hash_parça $$1 } alias -l hash_parça { did -r hash_table 5,6 var %x = 1,%sel = $iif($1,$1,$did(hash_table,4,$did(hash_table,4).sel)) | while $hget(%sel,%x).item { did -az hash_table 5 $hget(%sel,%x).item did -az hash_table 6 $hget(%sel,%x).data inc %x } did -c hash_table 4 $didwm(hash_table,4,$$1) } on *:dialog:hash_table:init:*:hash_tablo on *:dialog:hash_table:sclick:4:hash_parça on *:dialog:hash_table:sclick:5:{ did -u $dname 6 if $did(6,0).lines != 0 { var %x = 1 | while $did(5,%x).sel { did -ck $dname 6 $did(5,%x).sel | inc %x } } } on *:dialog:hash_table:sclick:6:{ did -c $dname 5 $did(6).sel } on *:dialog:hash_table:dclick:4:{ did -re $dname 12,13,14 did -u $dname 5,6 did -a $dname 12 $did(4,$did(4).sel) did -b $dname 13,14 } on *:dialog:hash_table:dclick:5:{ did -re $dname 12,13,14 did -u $dname 6 did -a $dname 12 $did(4,$did(4).sel) did -a $dname 13 $did(5,$did(5).sel) did -b $dname 12,14 } on *:dialog:hash_table:dclick:6:{ did -re $dname 12,13,14 did -ab $dname 12 $did(4,$did(4).sel) did -ab $dname 13 $did(5,$did(5).sel) did -a $dname 14 $did(6,$did(6).sel) } on *:dialog:hash_table:sclick:16-18:{ if $did == 16 { var %x = 1 | while $hget($did(4,$did(4,%x).sel)) { .hfree $did(4,$did(4,%x).sel) | inc %x } | hash_tablo } if $did == 17 { var %x = 1 | while $did(5,%x).sel { .hdel $did(4,$did(4).sel).text $hget($did(4,$did(4).sel),%x).item | inc %x } | hash_parça } if $did == 18 { var %x = 1 | while $did(6,%x).sel { .hadd $did(4,$did(4).sel).text $did(5,$did(6,%x).sel)) | inc %x } | hash_parça } } on *:dialog:hash_table:sclick:15:{ if $did(12).enabled && $did(13).enabled && $did(14).enabled { $iif($hget($did(12)),.hadd $did(12) $did(13) $iif($did(14),$did(14)),$iif(!$did(13),.hmake $did(12),.hadd -m $did(12) $did(13) $iif($did(14),$did(14)))) hash_tablo $did(12) | did -re $dname 12,13,14 } if (!$did(13).enabled && !$did(14).enabled) { var %x = 1 | while $hget($did(4,$did(4).sel),%x).item { .hadd -m $did(12) $hget($did(4,$did(4).sel),%x).item $hget($did(4,$did(4).sel),%x).data inc %x } .hfree $did(4,$did(4).sel) | did -o $dname 4 $did(4).sel $did(12) | did -re $dname 12,13,14 } if (!$did(12).enabled && !$did(14).enabled) { .hadd -m $did(12) $did(13) | hash_parça | did -re $dname 12,13,14 } if (!$did(12).enabled && !$did(13).enabled) { .hadd -m $did(12) $did(13) $did(14) | hash_parça | did -re $dname 12,13,14 } } on *:dialog:hash_table:sclick:20:{ did -u $dname 4,5,6 | did -re $dname 12,13,14 | hash_tablo }

Sağ klik menüsüne ekledim açılışını. Statüs, kanal ya da özel konuşma penceresindeyken sağ klik yaparsanız 'Hash Tabloları' olarak göreceksinizdir.

Mevcut hash tabloları ve seçiminize göre parça ve verileri listeler.

Silme: Karışıklık olmaması için her bir sütun için ayrı silme seçeneği ekledim. Her bir sütunun altındaki silme seçeneği, üstünde bulunan sütundaki seçtiğiniz (bir veya birden çok) değeri siler.

Düzenleme: Çift tıkladığınız değeri alt taraftaki 'Düzenleme/Ekleme' kısmına taşır ve düzenlemenize olanak sağlar.

Örneğin; tablo1 tablonuzda parça1 isimli bir parçanız ve veri1 diye bir değeriniz var. tablo1'in adını değiştirmek için Tablolar: sütunundan çift tıklamanız gerekiyor. Aynı anda birden fazla değerde değişiklik yapamazsınız. O nedenle eğer ki; parça1 ve veri1 değerinin değiştirmek istiyorsanız önce birini, sonra diğerini değiştirmelisiniz. Zira diyalog da diğer kısımları değiştirmenize izin vermeyecektir.

Yeni Ekleme: Yine alt kısımdaki 'Düzenleme/Ekleme' kısmından yapabilirsiniz. Ama unutmayın ki tablo ismi yazmadan bir parça ya da veri girişi yapamazsınız. Eğer ki yazdığınız tablo isminde bir hash tablonuz zaten varsa, var olan tabloya ekleme yapacaktır. Eğer yazdığınız tablo isminde tablonuz ve yazdığınız parça isminde parçanız varsa, var olan veriyi yazdığınız yeni veri ile yenileyecektir.

Karşılaşabileceğiniz tek problem ise (çözümünü bulamadığım) tablo adı sadece sayılardan oluşan tabloları düzenleme, silme ya da yeni veri ekleme olanağı bulunmamaktadır. Onun haricinde diyalog aslında epey kolay kullanımlı. Anlamadığınız bir kısım ya da karşılaştığınız bir hata olursa bildirmeniz yeterlidir.
Bu forumdaki linkleri ve resimleri görebilmek için en az 25 mesajınız olması gerekir.


Kolay gelsin.

 
Alıntı ile Cevapla

IRCForumlari.NET Reklamlar
sohbet odaları reklam ver Benimmekan Mobil Sohbet
Alt 03 Mart 2013, 04:41   #2
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash Tablo Görüntüleyici/Düzenleyici




Güzel vede farklı düşünmüşsün; böylece hem yeni öğrenen biri daha rahat anlayarak işlem yapar, hemde kod yığınlarıyla boğuşanlar için kafa karıştığı anlarda kolaylık sağlar.

-

Demiş olduğun sayılardan oluşan Tablolar içinde (daha önce böyle bir sorun dikkatimi çekmemişti o yüzden biraz kurcaladım bende)
***
/hadd -m 1234 deneme dene1 şeklinde bir veri eklediğimizi düşünelim
***
//echo -a $hget(1234,0).item veya //echo -a $hget(1234,0).data yaptığında 0 değeri dönüyor.
Bu nedenlede Tablo içerisindeki parça veya veri görünmüyor.
***
Fakat bunu şu şekilde denersek 1234 tablosunun mircimizdeki 1 numaralı tablo olduğunu düşünürsek
//echo -a $hget(1,0).item yaptığımızda 1 parça olduğunu gösteriyor bize.

Buradan yola çıkarak //echo -a Parça: $hget(1,1).item & Veri: $hget(1,1).data yaptığımızda bize Parça: deneme & Veri: dene1 şeklinde dönecektir.
***

Bu anlattıklarımdan yola çıkarak şu şekilde bir kod hazırladım /hashlist yaparak kullanabilirsin. Numaralardan da oluşan Tablolar dahil, içerisindeki parça ve verileri listeler. Buradan yola çıkarak sorununu halledebilirsin sanırım.
Kod:   Kodu kopyalamak için üzerine çift tıklayın!
alias hashlist { var %t = 1 while $hget(%t) { var %p = 1 echo -a $hget(%t) Tablo Adı while $hget(%t,%p).item { echo -a 2 Parça: $hget(%t,%p).item - 4 Veri: $hget(%t,%p).data inc %p } echo -a : inc %t } }


 
Alıntı ile Cevapla

Alt 03 Mart 2013, 23:01   #3
Çevrimdışı
Kullanıcıların profil bilgileri misafirlere kapatılmıştır.
IF Ticaret Sayısı: (0)
IF Ticaret Yüzdesi:(%)
Cevap: Hash Tablo Görüntüleyici/Düzenleyici




Hmm.. Teşekkür ederim yol gösterimin için. Bu sayede Hash Tablolarında kullanılan $hget(name/N) identifierin öncelikli olarak N kıstasına baktığını anladım. Yani hem 7 adında bir tablo, hem de 7'den fazla tablo varsa $hget(7) yaptığında 7. tabloya gidiyor. Bu mantıkla giderek bazı düzenlemeler yaptım;

Kod:   Kodu kopyalamak için üzerine çift tıklayın!
menu status,channel,query { - Hash Tabloları: dialog $iif(!$dialog(hash_table),-m hash_table,-v) hash_table } dialog hash_table { title "Hash Tablo Görüntüleyici/Düzenleyici" size -1 -1 245 165 option dbu box "Tablolar:", 1, 5 5 75 110 list 4, 10 15 65 85, size extsel hsbar button "Seçilenleri Sil", 16, 25 102 35 10 box "Parçalar:", 2, 85 5 75 110 list 5, 90 15 65 85, size extsel hsbar button "Seçilenleri Sil", 17, 105 102 35 10 box "Veriler:", 3, 165 5 75 110 list 6, 170 15 65 85, size extsel hsbar button "Seçilenleri Sil", 18, 185 102 35 10 box "", 7, 5 115 235 45 text - Düzenlemeyi istediğiniz değere listeden çift tıklayın. $crlf $+ - Bağımsız eklemek için 'Temizle' butonuna basın., 8, 10 142 180 14, disable text "Tablo:", 9, 11 122 25 8 edit "", 12, 10 130 60 10, autohs text "Parça:", 10, 71 122 25 8 edit "", 13, 70 130 60 10, autohs text "Veri:", 11, 131 122 25 8 edit "", 14, 130 130 60 10, autohs button "Ekle/Düzenle", 15, 195 125 40 12 button "Temizle", 20, 195 141 40 12 } alias -l hash_tablo { did -r hash_table 4,5,6 | var %x = 1 | while $hget(%x) { did -az hash_table 4 $hget(%x) | inc %x } | hash_parça $1 $2 } alias -l hash_parça { did -r hash_table 5,6 if $1 { var %y = 1 | while $hget(%y) { if $hget(%y) == $1 { set %hash1 %y | break } | else inc %y } } var %x = 1 | while $hget(%hash1,%x).item { did -az hash_table 5 $hget(%hash1,%x).item did -az hash_table 6 $hget(%hash1,%x).data inc %x } $iif($2,did -c hash_table 4 $didwm(hash_table,4,$2)) | unset %hash1 } on *:dialog:hash_table:init:*:hash_tablo on *:dialog:hash_table:sclick:4:hash_parça $did(4,$did(4).sel) on *:dialog:hash_table:sclick:5:{ did -u $dname 6 if $did(6,0).lines != 0 { var %x = 1 | while $did(5,%x).sel { did -ck $dname 6 $did(5,%x).sel | inc %x } } } on *:dialog:hash_table:sclick:6:{ did -c $dname 5 $did(6).sel } on *:dialog:hash_table:dclick:4:{ did -re $dname 12,13,14 did -u $dname 5,6 did -a $dname 12 $did(4,$did(4).sel) did -b $dname 13,14 } on *:dialog:hash_table:dclick:5:{ did -re $dname 12,13,14 did -u $dname 6 did -a $dname 12 $did(4,$did(4).sel) did -a $dname 13 $did(5,$did(5).sel) did -b $dname 12,14 } on *:dialog:hash_table:dclick:6:{ did -re $dname 12,13,14 did -ab $dname 12 $did(4,$did(4).sel) did -ab $dname 13 $did(5,$did(5).sel) did -a $dname 14 $did(6,$did(6).sel) } on *:dialog:hash_table:sclick:16-18:{ if $did == 16 { var %x = 1 | while $did(4,$did(4,%x).sel) { .hfree $did(4,$did(4,%x).sel) | inc %x } | hash_tablo } if $did == 17 { var %x = 1 | while $did(5,%x).sel { .hdel $did(4,$did(4).sel).text $did(5,$did(5,%x).sel) | inc %x } hash_parça $did(4,$did(4).sel).text $did(4,$did(4).sel).text } if $did == 18 { var %x = 1 | while $did(6,%x).sel { .hadd $did(4,$did(4).sel).text $did(5,$did(6,%x).sel) | inc %x } hash_parça $did(4,$did(4).sel).text $did(4,$did(4).sel).text } } on *:dialog:hash_table:sclick:15:{ if $did(12).enabled && $did(13).enabled && $did(14).enabled { var %q = 1 | while $hget(%q) { if $hget(%q) == $did(12) { $iif($did(13),.hadd $did(12) $did(13) $iif($did(14),$did(14))) | set -u %hash2 1 | break } | else inc %q } if !%h { .hmake $did(12) $iif($did(13), $did(13) $iif($did(14), $did(14))) } hash_tablo $did(12) $did(12) | did -re $dname 12,13,14 } if (!$did(13).enabled && !$did(14).enabled) { if $did(4,$did(4).sel) { var %e = 1 | while $hget(%e) { if $hget(%e) == $did(4,$did(4).sel) { set -u2 %hash3 %e | break } | else inc %e } } var %x = 1 | while $hget(%hash3,%x).item { .hadd -m $did(12) $hget(%hash3,%x).item $hget(%hash3,%x).data inc %x } .hfree $did(4,$did(4).sel) | hash_tablo $did(12) $did(12) | did -re $dname 12,13,14 } if (!$did(12).enabled && !$did(14).enabled) { .hadd -m $did(12) $did(13) | hash_parça $did(12) $did(12) | did -re $dname 12,13,14 } if (!$did(12).enabled && !$did(13).enabled) { .hadd -m $did(12) $did(13) $did(14) | hash_parça $did(12) $did(12) | did -re $dname 12,13,14 } } on *:dialog:hash_table:sclick:20:{ did -u $dname 4,5,6 | did -re $dname 12,13,14 | hash_tablo }

Tablo adı sadece sayılardan oluşanları yenileme, düzenleme, gösterme vb.. gibi bir çok farklı seçeneği denedim ve hepsinde de istenilen sonucu veriyor.

1. mesajımı değiştirmeye gücüm elvermediğinden başlığı inceleyecek ve kodu kullanacak olan arkadaşlar bu mesajımdaki kodu alır ve kullanırlarsa daha verimli sonuçlar elde edeceklerdir.

Umarım ki işinize yarar. İyi paylaşımlar.

 
Alıntı ile Cevapla

Cevapla

Etiketler
görüntüleyici or düzenleyici


Konuyu Toplam 1 Üye okuyor. (0 Kayıtlı üye ve 1 Misafir)
 

Yetkileriniz
Konu Acma Yetkiniz Yok
Cevap Yazma Yetkiniz Yok
Eklenti Yükleme Yetkiniz Yok
Mesajınızı Değiştirme Yetkiniz Yok

BB code is Açık
Smileler Açık
[IMG] Kodları Açık
HTML-Kodu Kapalı
Trackbacks are Kapalı
Pingbacks are Açık
Refbacks are Açık


Benzer Konular
Konu Konuyu Başlatan Forum Cevaplar Son Mesaj
Hash tablo kullanımı(Detaylı ve örneklemelerle) L4roXyL mIRC Scripting Dersleri 7 15 Kasım 2013 22:43
Hash Tablo Örnek Yardım pls. daRkMoRGaN mIRC Scripting Sorunları 4 27 Aralık 2008 13:31
Authcode Görüntüleyici DefauLt mIRC Scripting Hazır Kodlar 13 23 Temmuz 2006 17:26