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/)
-   -   Filitreleme sorunu (https://www.ircforumlari.net/mirc-scripting-sorunlari/181812-filitreleme-sorunu.html)

med1kal 21 Şubat 2009 13:35

Filitreleme sorunu
 
Selam, alt alta verilerin sıralı olduğu bir metin belgesindeki çift olan verilerden birini silerek filitreleme işlemi için aşağıdaki gibi bir modül yazdım ama çok ağır çalışıyor. Daha faydalı önerilerinizi bekliyorum.

Örneğin aşağıdaki örnekte alt alta sıralı numaralar var. bu numaralardan 12'den iki adet var birini silmem gerekiyor.

12
45
78
12

Yaklaşık 15.000 satırlık metin belgeleri üzerinde işlem yapıyorum. bunları 1000'er satırlık metin belgelerine paylaştırdım ama yine 10 dakika sürüyor. Benim geliştirdiğim modül şu şekilde, ama çok yavaş:


Kod:

alias d.detect {
  var %i = 1, %file = $+(",$sfile(*.txt,Dosyayı seçin...,Başla),")
  var %o.file = $replace(%file,$remove($gettok(%file,-1,92),.txt"),$+($remove($gettok(%file,-1,92),.txt"),-ok))
  while $read(%file,%i) { 
    if ($cwnum(%o.file,$read(%file,%i)) == ok) write %o.file $read(%file,%i)
    inc %i
  }
}
alias cwnum {
  var %i = 1, %n = $gettok($1-,-1,32), %file = $remove($gettok($1-,1-,32),$gettok($1-,-1,32))
  if (!$exists(%file)) write %file ::begin::
  while $read(%file,%i) {
    if (%n == $read(%file,%i)) var %x = false
    inc %i
  }
  if (!%x) return ok
}


XcLusive 21 Şubat 2009 14:58

Cevap: Filitreleme sorunu
 
dosyalarında ne kadar satır var ne kadar dosyan var bilmiyorum ama ufak bir kod yazdım ve test ettim tek sorun anlayamadığım bir bug sanırım.. eğer ayıklanacak dosyanın başındaki değer 1 ise okumaya 2 den devam ediyor buda sanırım 6.21 bugu her neyse kod çalışıyor şöyle bir testte bulundum..

dosyanın içinde olan veriler;

x
1
2
3
4
5
6
7
8
9
10
11
12
45
78
x
y
99
12


silinenleri gösteriyor, extradan var olanlarıda kırmızı olarak belirtmiştim.
exist string : x deleted 16 line
exist string : 12 deleted 19 line

Kod:

alias ayıkla {
  unset %x
  if (!$1) { echo 4 -a Komut Kullanımı: /ayıkla ayıklanacak-dosya.txt }
  if (!$hget(filter)) { hmake filter }
  var %x = 1,%a.file = $shortfn(%a.file)
  while (%x <= $lines($1)) {
    var %st = $read(%a.file,%x),%r = $rand(111111111,99999999)
    if ($hget(filter,%st)) { write $+(-l,$readn) %a.file | echo -s exist string : %st deleted $readn line }
    hadd filter %st %r
    inc %x 1
  }
  hfree -w filter
}

eğer sorun falan olursa buradan belirtirsin.


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

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