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/)
-   -   ✔ Çözüldü Text satır sildirme (https://www.ircforumlari.net/mirc-scripting-sorunlari/1060932-text-satir-sildirme.html)

Comanche 16 Mayıs 2025 09:24

Text satır sildirme
 
Slmlar...


/write -dl10 takip.txt komutu sadece 10. satırı sildirebiliyoruz.

Örneğin 10. satırdan sonraki tüm satırları nasıl sildirebiliriz.?

Gurkan 16 Mayıs 2025 15:25

Cevap: Text satır sildirme
 
Alıntı:

Comanche Nickli Üyeden Alıntı (Mesaj 1043020594)
Slmlar...


/write -dl10 takip.txt komutu sadece 10. satırı sildirebiliyoruz.

Örneğin 10. satırdan sonraki tüm satırları nasıl sildirebiliriz.?

Kod:

alias silsatir {
  var %satir = $1
  var %dosya = $2
  var %toplam = $read(%dosya, n)
  while (%toplam > %satir) {
    write -dl %toplam %dosya
    dec %toplam
  }
}

Silmek için direk bir write komutu bulamadım. Coder arkadaşlarım daha kullanışlı bir yol bulacaklardır. Fakat benim aklıma böyle bir yol geldi dene bakalım.

Kullanımı: /silsatir 10 takip.txt

Comanche 16 Mayıs 2025 16:24

Cevap: Text satır sildirme
 
mirc kilitlendi.....

Gurkan 16 Mayıs 2025 16:33

Cevap: Text satır sildirme
 
Alıntı:

Comanche Nickli Üyeden Alıntı (Mesaj 1043020770)
mirc kilitlendi.....

Kod:

alias silsatir {
  var %satir = $1
  var %dosya = $2
  var %toplam = $read(%dosya, n) 
  if (%satir >= %toplam) return 
  while (%toplam > %satir) {
    write -dl$+(%satir,1) %dosya
    dec %toplam
  }
}

böyle dene bakalım

CoCoRiCo 16 Mayıs 2025 20:14

Cevap: Text satır sildirme
 
Loadbuff - Savebuff kullanmalısınız.
Satırları döngü ile silmek sakıncalıdır.
Her silinen satır sonrası satır sayısı değişir.
Bu döngü de hataya neden olur.

Mylife 16 Mayıs 2025 21:00

Cevap: Text satır sildirme
 
Alıntı:

Comanche Nickli Üyeden Alıntı (Mesaj 1043020594)
Slmlar...


/write -dl10 takip.txt komutu sadece 10. satırı sildirebiliyoruz.

Örneğin 10. satırdan sonraki tüm satırları nasıl sildirebiliriz.?



Kod:

on *:INPUT:*: {
  if ($1 == !silsonrasi) {
    var %satir = $2
    if (!%satir) {
      echo -a  Kullanım: !silsonrasi <satır no>
      haltdef
      return
    }

    var %dosya = takip.txt
    var %yedek = takip_temp.txt

    if (!$isfile(%dosya)) {
      echo -a  Dosya bulunamadı: %dosya
      haltdef
      return
    }

    var %toplam = $lines(%dosya)
    if (%toplam == 0) {
      echo -a  Dosya boş görünüyor: %dosya
      haltdef
      return
    }

    if (%satir > %toplam) {
      echo -a  Dosyada sadece %toplam satır var. %satir sonrası yok.
      haltdef
      return
    }

    var %i = 1
    .remove %yedek
    while (%i <= %satir) {
      write %yedek $read(%dosya, %i)
      inc %i
    }


    .remove %dosya
    .rename %yedek %dosya

    echo -a  %satir $+ . satırdan sonrası başarıyla silindi.
    haltdef
  }
}

Takip.txt dosyasının örnek içeriği:
Kod:

ali 
veli 
serkan 
murat 
özkan 
sinan

Kullanım:
Kod:

/silsonrasi 3

3. satırdan sonrası başarıyla silindi.

Takip.txt dosyasının yeni görünümü:
Kod:

ali 
veli 
serkan





Belirtilen satır numarasından sonraki tüm satırları siler. İyi forumlar dilerim.

Comanche 16 Mayıs 2025 21:31

Cevap: Text satır sildirme
 
tşkler

CoCoRiCo 16 Mayıs 2025 21:58

Cevap: Text satır sildirme
 
Aşağıdakiler dışında normal /write fonksiyonu kullanılmaya devam eder
çalışacağını tahmin ediyorum (.


/write -dl10+ dosya.txt # 10. satırdan sonrakileri siler
/write -dl10- dosya.txt # 10. satırdan öncekileri siler
/write -dl10-50 dosya.txt # 10-50 arası satırları siler
/write -dl10+50 dosya.txt # 10+50 satırları dışındakileri siler


Kod:

alias write {
  if ($regex($1, /^-dl(\d+\+|\d+-\d+|\d+-|\d+\+\d+)$/)) {
    var %a~ = $+(@_,$md5($2)) | .window -hn %a~ | .loadbuf -r %a~ $2 | var %b~ = $line(%a~, 0)
    if ($regex($1, /^-dl(\d+)\+$/)) {
      var %c~~ = $calc($regml(1) + 1)
      if (%c~~ <= %b~) { filter -c %a~ %a~ %c~~ - %b~ | filter -x %a~ %a~ * }
    }
    elseif ($regex($1, /^-dl(\d+)-(\d+)$/)) {
      var %c~~ = $regml(1), %d~~ = $regml(2)
      filter -c %a~ %a~ %c~~ - %d~~ | filter -x %a~ %a~ *
    }
    elseif ($regex($1, /^-dl(\d+)-$/)) {
      var %d~~ = $calc($regml(1) - 1)
      if (%d~~ >= 1) { filter -c %a~ %a~ 1 - %d~~ | filter -x %a~ %a~ * }
    }
    elseif ($regex($1, /^-dl(\d+)\+(\d+)$/)) {
      var %a~ = $regml(1), %b~ = $regml(2), %c~~ = $calc(%a~ + %b~ - 1)
      if (%a~ <= %b~ && %c~~ <= %b~) {
        filter -c %a~ %a~ %a~ - %c~~ | filter -x %a~ %a~ *
      }
    }
    .savebuf %a~ $2 | .window -c %a~
  }
  else {
    !write $1-
  }
}


Comanche 17 Mayıs 2025 10:56

Cevap: Text satır sildirme
 
slmlar..

/write -dl10+ dosya.txt
/write -dl10- dosya.txt
/write -dl10-50 dosya.txt

Bu 3 komutta dosyadaki tüm satırları siliniyor.

/write -dl10+50 dosya.txt kullandığımızda

/savebuf: invalid window (line 22, script110.ini) hatasını veriyor.

Coderlab 19 Mayıs 2025 02:44

Cevap: Text satır sildirme
 
Alıntı:

Comanche Nickli Üyeden Alıntı (Mesaj 1043020967)
slmlar..

/write -dl10+ dosya.txt
/write -dl10- dosya.txt
/write -dl10-50 dosya.txt

Bu 3 komutta dosyadaki tüm satırları siliniyor.

/write -dl10+50 dosya.txt kullandığımızda

/savebuf: invalid window (line 22, script110.ini) hatasını veriyor.


Kod:

alias write {
  if ($regex($1, /^-dl(\d+\+|\d+-\d+|\d+-|\d+\+\d+)$/)) {
    var %file = $2
    if (!$isfile(%file)) { echo -s [write] Dosya bulunamadı: %file | return }

    var %win = $+(@write_,$ticks)
    window -h %win
    loadbuf -r %win %file
    var %total = $line(%win, 0)

    var %start = 0, %end = 0

    if ($regex($1, /^-dl(\d+)\+$/)) {
      %start = $calc($regml(1) + 1)
      %end = %total
    }
    ; -dlX-Y
    elseif ($regex($1, /^-dl(\d+)-(\d+)$/)) {
      %start = $regml(1)
      %end = $regml(2)
    }
    elseif ($regex($1, /^-dl(\d+)-$/)) {
      %start = 1
      %end = $regml(1)
    }
    elseif ($regex($1, /^-dl(\d+)\+(\d+)$/)) {
      %start = $regml(1)
      %end = $calc(%start + $regml(2) - 1)
    }

    if (%start < 1) || (%end < %start) || (%end > %total) {
      window -c %win
      echo -s [write] Geçersiz satır aralığı (%start - %end)
      return
    }

    var %tmp = write_temp.txt
    if ($exists(%tmp)) .remove %tmp
    var %i = %start
    while (%i <= %end) {
      var %line = $line(%win, %i)
      if (%line != $null) write %tmp %line
      inc %i
    }

    .remove %file
    .rename %tmp %file
    window -c %win
    echo -s ? /write $1 $2 tamamlandı. Satırlar: %start - %end
  }
  else {
    !write $1-
  }
}

Kod:

/write -dl10- dosya.txt  -> İlk 10 satır kalır
/write -dl5+ dosya.txt      -> Sadece 6. satırdan sonrası kalır
/write -dl5-15 dosya.txt    -> 5–15 arası kalır
/write -dl20+5 dosya.txt    -> 20’den başlayarak 5 satır kalır (20–24)


Comanche 20 Mayıs 2025 09:10

Cevap: Text satır sildirme
 
Çok teşekkürler....

CoCoRiCo 26 Mayıs 2025 16:29

Cevap: Text satır sildirme
 
Alıntı:

Comanche Nickli Üyeden Alıntı (Mesaj 1043020967)
slmlar..

/write -dl10+ dosya.txt
/write -dl10- dosya.txt
/write -dl10-50 dosya.txt

Bu 3 komutta dosyadaki tüm satırları siliniyor.

/write -dl10+50 dosya.txt kullandığımızda

/savebuf: invalid window (line 22, script110.ini) hatasını veriyor.




evet bu sonucu tahmin edemedim, loadbuf ve savebuf için mIRC ayarlarındaki limitler ve mIRC karakter kodlaması sorun (renkler vb.) çıkarabilir.


okuma yazma işinde isteğinin eksik olması büyük ayıp :)
neyse aşağıdaki kodu deneyebilirsin. temiz bir çalışma sağlayacaktır
yeni jenerasyon fonksiyonlar kullanmadım.



Kod:

/*
Örnek:
/write -dl5-7 dosya.txt  # 5 ile 7 arası bırak (5,6,7)
/write -dl10- dosya.txt # 10 ve sonrası bırak (10..son)
/write -dl10+ dosya.txt # 10 ve öncesi bırak (1..10)
/write -dl10+50 dosya.txt # 10 ile 50 arası bırak
*/

alias write {
  if ($regex($1, /^-dl(\d+)-(\d+)$/) || $regex($1, /^-dl(\d+)-$/) || $regex($1, /^-dl(\d+)\+$/) || $regex($1, /^-dl(\d+)\+(\d+)$/)) {
    var %f~ = $2
    if (!$isfile(%f~)) { echo -a Dosya yok: %f~ | return }
    var %t~ = $+($mircdir,temp.t)
    .remove -q %t~
    var %l~ = $lines(%f~),%i~ = 1
    if ($regex($1, /^-dl(\d+)-(\d+)$/)) {
      var %s~ = $regml(1),%e~ = $regml(2)
      while (%i~ <= %l~) {
        var %x~ = $read(%f~, nt, %i~)
        if (%i~ >= %s~ && %i~ <= %e~) write -a %t~ %x~
        inc %i~
      }
    }
    elseif ($regex($1, /^-dl(\d+)-$/)) {
      var %s~ = $regml(1)
      while (%i~ <= %l~) {
        var %x~ = $read(%f~, nt, %i~)
        if (%i~ >= %s~) write -a %t~ %x~
        inc %i~
      }
    }
    elseif ($regex($1, /^-dl(\d+)\+$/)) {
      var %e~ = $regml(1)
      while (%i~ <= %l~) {
        var %x~ = $read(%f~, nt, %i~)
        if (%i~ <= %e~) write -a %t~ %x~
        inc %i~
      }
    }
    elseif ($regex($1, /^-dl(\d+)\+(\d+)$/)) {
      var %s~ = $regml(1),%e~ = $regml(2)
      while (%i~ <= %l~) {
        var %x~ = $read(%f~, nt, %i~)
        if (%i~ >= %s~ && %i~ <= %e~) write -a %t~ %x~
        inc %i~
      }
    }
    else {
      ; # Diğer durumlarda dosyayı olduğu gibi kopyala
      while (%i~ <= %l~) {
        var %x~ = $read(%f~, nt, %i~)
        write -a %t~ %x~
        inc %i~
      }
    }
    .remove -q %f~
    .rename %t~ %f~
  }
  else {
    !write $1-
  }
}


Comanche 29 Mayıs 2025 09:05

Cevap: Text satır sildirme
 
tşkler....

manikdepresif 18 Ağustos 2025 07:54

Cevap: Text satır sildirme
 
filter ile de yapilabiliyor sanirim
5 ten sonrasini siler
Kod:

/filter -crff 1-5 dosya.txt dosya.txt *


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

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