Author Topic: Найти нужную строку в текстовом файле  (Read 4504 times)

0 Members and 1 Guest are viewing this topic.

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Уважаемые форумчане!

Перерыл многое, и форум и справку, но не могу найти:(

Буду благодарен за код или ссылку, где это обсуждалось.

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #1 on: January 12, 2022, 09:06:27 PM »
Code: (clickermann) [Select]
FOR($n=1, $n < TFCOUNT("file.txt")+1) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      print("Нашли в строке ", $n)    //если есть
      $n = TFCOUNT("file.txt")+1 //стоп цикл
   END_IF   
END_CYC

IF($n < TFCOUNT("file.txt")+2) //если ее нет
  print("не нашли")
END_IF

halt

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #2 on: January 13, 2022, 02:33:54 AM »
Code: (clickermann) [Select]
FOR($n=1, $n < TFCOUNT("file.txt")+1) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      print("Нашли в строке ", $n)    //если есть
      $n = TFCOUNT("file.txt")+1 //стоп цикл
   END_IF   
END_CYC

IF($n < TFCOUNT("file.txt")+2) //если ее нет
  print("не нашли")
END_IF

halt

Спасибо))

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #3 on: January 13, 2022, 03:57:10 PM »

Code: (clickermann) [Select]
FOR($n=1, $n < TFCOUNT("file.txt")+1) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      print("Нашли в строке ", $n)    //если есть
      $n = TFCOUNT("file.txt")+1 //стоп цикл
   END_IF   
END_CYC

IF($n < TFCOUNT("file.txt")+2) //если ее нет
  print("не нашли")
END_IF

halt

Спасибо))
И вам огромное человеческое СПАСИБО, что взяли на себя этот огромный труд; практически в одиночку оживлять умираюющий форум новыми темами!

SimplY

  • Активный участник
  • ***
  • Posts: 125
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #4 on: January 15, 2022, 04:58:59 PM »

Code: (clickermann) [Select]
FOR($n=1, $n < TFCOUNT("file.txt")+1) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      print("Нашли в строке ", $n)    //если есть
      $n = TFCOUNT("file.txt")+1 //стоп цикл
   END_IF   
END_CYC

IF($n < TFCOUNT("file.txt")+2) //если ее нет
  print("не нашли")
END_IF

halt

Спасибо))
И вам огромное человеческое СПАСИБО, что взяли на себя этот огромный труд; практически в одиночку оживлять умираюющий форум новыми темами!
Сарказм? Надоел тут всем?

Иван_Васильевич

  • Освоившийся
  • **
  • Posts: 72
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #5 on: January 20, 2022, 02:12:41 PM »

Code: (clickermann) [Select]
FOR($n=1, $n < TFCOUNT("file.txt")+1) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      print("Нашли в строке ", $n)    //если есть
      $n = TFCOUNT("file.txt")+1 //стоп цикл
   END_IF   
END_CYC


IF($n < TFCOUNT("file.txt")+2) //если ее нет
  print("не нашли")
END_IF

halt

Спасибо))
И вам огромное человеческое СПАСИБО, что взяли на себя этот огромный труд; практически в одиночку оживлять умираюющий форум новыми темами!
Сарказм? Надоел тут всем?
Л-логика
 когда перестанут отвечать на твои сообщения, то считай уже надоел.
 А слово Сарказм здесь ругательное, в виду низкого, среднего культурного уровня зарегистрированных пользователей
 форума, попрошу его не употреблять, ведь реально могут новую травлю начать всего из-за одного неосторожного или непонятного слова. Успехов вам в освоении программы.

Oblie1968

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #6 on: February 21, 2022, 02:51:47 PM »
И вам огромное человеческое СПАСИБО, что взяли на себя этот огромный труд; практически в одиночку оживлять умираюющий форум новыми темами!
Честно говоря, я тоже сильно удивлён, что форум не живёт. Может, где-то есть другой форум, где идёт нормальное обсуждение проблем и траблов кликермана, а мы этот другой форум просто не знаем?

Данный код я бы чуть по другому сделал.

Code: (clickermann) [Select]
$ncount=TFCOUNT("file.txt")
$seek=0
FOR($n=1, $n <= $ncount and $seek==0) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      $seek=$n
   END_IF   
END_CYC
 
IF($seek)
  print("Нашли в строке ", $seek)    //если есть
ELSE
  print("не нашли")                //если ее нет
END_IF
 
halt

dramster

  • Герой форума
  • *****
  • Posts: 1134
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #7 on: February 21, 2022, 05:07:00 PM »
Честно говоря, я тоже сильно удивлён, что форум не живёт. Может, где-то есть другой форум, где идёт нормальное обсуждение проблем и траблов кликермана, а мы этот другой форум просто не знаем?

Что-то мне подсказывает, что  нынче пропал интерес у людей что-то ломать, читить,... . И скорее всего это правильно. А кликерман был создан именно в то время, когда это было востребовано. Другое дело, это автоматизация работы на пк , но тут аудитории уже намного меньше.
Еще пару лет назад тут было куча интересных задач и реализаций этих задач на кликере. Сейчас же всем пофиг, максимум, как кликнуть и как остановить...  :-[ .
Я до сих пор иногда вспоминаю "поиск поти А*" которую реализовал Vint на кликермане http://crapware.aidf.org/forum/index.php?topic=1958.0 , даже вроде понял как это работает, пытался переписать мысли в код, но все шло наперекосяк... и все, дым.. Это то что вспомнил в первую очередь, таких тем уйма.

Oblie1968

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #8 on: February 22, 2022, 01:06:54 AM »
Я до сих пор иногда вспоминаю "поиск поти А*" которую реализовал Vint на кликермане http://crapware.aidf.org/forum/index.php?topic=1958.0 , даже вроде понял как это работает, пытался переписать мысли в код, но все шло наперекосяк... и все, дым.. Это то что вспомнил в первую очередь, таких тем уйма.
Мне кажется, такие задачи не для кликера, он же однозначно будет их исполнять долго.

Я бы лучше пообсуждал чисто кликермановскую специфику. Вот кликерман совершенно не работает, например, с текстом, а я в хвост и в гриву его юзаю. Пиксели найти, про картинки я вообще молчу, долго и не надёжно, а текст - милое дело. Не всегда, конечно, Ctrl+A Ctrl+C доступно, в играх текст не увидишь, но что касается сайтов - первейшее дело, анализируешь сразу весь текст, не только тот, который виден на экране.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #9 on: February 22, 2022, 09:36:26 AM »
Мне кажется, такие задачи не для кликера, он же однозначно будет их исполнять долго.
Это и так понятно было, но интересно.

Я бы лучше пообсуждал чисто кликермановскую специфику. Вот кликерман совершенно не работает, например, с текстом, а я в хвост и в гриву его юзаю. Пиксели найти, про картинки я вообще молчу, долго и не надёжно, а текст - милое дело.
Кликер нормально работает с текстом. Ну, достаточно нормально  :) В основном с одиночными строками, с многострочными сложнее, особенно в старых версиях.
И почему это про картинки нужно молчать? Это как раз один из основных функционалов. Работает он с ними прекрасно, возможности хорошие. Нужно научиться ими пользоваться и большинство задач может быть решено.
Основной смысл кликера - работа с графическим отображнением, где прямого доступа к тексту или коду нет, или этот доступ не сулит ничего хорошего. Не единственная, но основная. В этом он похож на действия человека при работе с приложениями. И в этом же заключается большинство бед.

Я бы лучше пообсуждал чисто кликермановскую специфику. Не всегда, конечно, Ctrl+A Ctrl+C доступно, в играх текст не увидишь, но что касается сайтов - первейшее дело, анализируешь сразу весь текст, не только тот, который виден на экране.
А вот это как раз не кликеровская специфика - работать с текстом сайта, для этого почти нет функционала. Если нужно работать с запросами или с кодом сайта лучше выбрать более подходящий инструмент, python тот же.
« Last Edit: February 22, 2022, 09:41:18 AM by Vint »


Oblie1968

  • Освоившийся
  • **
  • Posts: 29
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #10 on: March 02, 2022, 08:08:03 PM »
Кликер нормально работает с текстом. Ну, достаточно нормально  :) В основном с одиночными строками, с многострочными сложнее, особенно в старых версиях.
И почему это про картинки нужно молчать? Это как раз один из основных функционалов. Работает он с ними прекрасно, возможности хорошие. Нужно научиться ими пользоваться и большинство задач может быть решено.
Основной смысл кликера - работа с графическим отображнением, где прямого доступа к тексту или коду нет, или этот доступ не сулит ничего хорошего. Не единственная, но основная. В этом он похож на действия человека при работе с приложениями. И в этом же заключается большинство бед.
А я считаю, что кликерман очень плохо работает с текстом. Про проблему отдельных символов я уже говорил, у меня масса случаев, когда он не находит текст, который есть; из буфера обмена текст берётся не всегда корректно; при сравнении строк, в которых есть служебные символы, те же CR/LF элементарные, вообще вылетает с ошибкой. Но так или иначе все эти трудности обходятся. Главное достоинство кликермана, по моему мнению, в том, что он может работать одновременно с различными приложениями, от офиса и графических редакторов, до сайтов и игрушек, и именно без влезания в суть того, что там у этих приложений внутри происходит. Программы "на коленке" пишутся быстро и получаются необычайно эффективные.

Новую версию ещё не пробовал. Скажите, в новой версии хоть какие-то файловые функции реализованы? То же переименование файла или каталога, копирование приходится выполнять внешними командными файлами.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #11 on: March 05, 2022, 05:32:03 PM »
Новую версию ещё не пробовал. Скажите, в новой версии хоть какие-то файловые функции реализованы? То же переименование файла или каталога, копирование приходится выполнять внешними командными файлами.
Все новые функции перечислены в справке, в разделе "История развития".
Для использования команд cmd, необязательно создавать файлы, можно передавать их аргументами.


Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #12 on: March 12, 2022, 01:41:26 PM »
Честно говоря, я тоже сильно удивлён, что форум не живёт. Может, где-то есть другой форум, где идёт нормальное обсуждение проблем и траблов кликермана, а мы этот другой форум просто не знаем?

Что-то мне подсказывает, что  нынче пропал интерес у людей что-то ломать, читить,... . И скорее всего это правильно. А кликерман был создан именно в то время, когда это было востребовано. Другое дело, это автоматизация работы на пк , но тут аудитории уже намного меньше.
Еще пару лет назад тут было куча интересных задач и реализаций этих задач на кликере. Сейчас же всем пофиг, максимум, как кликнуть и как остановить...  :-[ .
Я до сих пор иногда вспоминаю "поиск поти А*" которую реализовал Vint на кликермане http://crapware.aidf.org/forum/index.php?topic=1958.0 , даже вроде понял как это работает, пытался переписать мысли в код, но все шло наперекосяк... и все, дым.. Это то что вспомнил в первую очередь, таких тем уйма.
Просто во многих играх стали устанавливать защиту от автокликов, от которой уже и ps/2 не избавляет. Вот и пользоваться стали меньше ))
Я не ду... Потому и не бу...

Hito

  • Герой форума
  • *****
  • Posts: 1212
    • View Profile
Re: Найти нужную строку в текстовом файле
« Reply #13 on: March 12, 2022, 02:24:43 PM »
Code: (clickermann) [Select]
FOR($n=1, $n < TFCOUNT("file.txt")+1) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      print("Нашли в строке ", $n)    //если есть
      $n = TFCOUNT("file.txt")+1 //стоп цикл
   END_IF   
END_CYC

IF($n < TFCOUNT("file.txt")+2) //если ее нет
  print("не нашли")
END_IF

halt

На каждый - TFREAD("file.txt", $n), Clickermann открывает и закрывает текстовый файл, на что, как я полагаю, тратится время. В виду логики думаю, что целесообразней было бы открыть файл 1 раз, забрать строки в массыв и потом уже работать с этим массивом.

Code: (clickermann) [Select]
$t = $_ms
FOR($n=1, $n < TFCOUNT("file.txt")+1) //перебор всех строк
   IF(TFREAD("file.txt", $n) = "Искомая строка")  //сверяем каждую строку с искомой
      print("Нашли в строке ", $n)    //если есть
      $n = TFCOUNT("file.txt")+1 //стоп цикл
   END_IF
END_CYC

IF($n < TFCOUNT("file.txt")+2) //если ее нет
   print("не нашли")
END_IF
LOGWRITE ("время поиска = ",$_ms-$t)




$t = $_ms
TFREADARR ("file.txt", $arr)
$st_num = 0
FOR($i=0,$i<ARRSIZE($arr)+1)
   IF($arr[$i] = "Искомая строка")
      $st_num = $i+1
      $i=ARRSIZE($arr)
   END_IF
END_CYC
UNDEFINE ($arr)

IF($st_num > 0)
   LOGWRITE ("Строка найдена на позиции ",$st_num)
else
   LOGWRITE ("Строка не найдена")
END_IF
LOGWRITE ("время поиска = ",$_ms-$t)

HALT

« Last Edit: March 12, 2022, 02:44:53 PM by Hito »
Я не ду... Потому и не бу...