Author Topic: команда STRREADLN не срабатывает примерно каждый пятый раз  (Read 1303 times)

0 Members and 1 Guest are viewing this topic.

Duff89

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Вот кусок моего кода
Code: [Select]
$maila=STRREADLN("mail.txt",RND(1,TFCOUNT("mail.txt")))//присваиваем переменной случайную строку из файла
WAITMS(300)
KEYSTRING($maila,80)//печатаем строку
 WAITMS(300)
 TFWRITE("log_pass.txt", $maila)//пишем в лог
Смысл в том, что этот код не срабатывает примерно каждый пятый раз и это дико напрягает. Файл mail.txt содержит строки такого типа
mail3.ru
gmail3.ru
mail2.com
gmail4.com
malna2.ru
malina4.com и т.д.
В чем может быть причина ума не приложу, притом в программе используется много аналогичных кусков, но не работает именно этот. Такое чувство, что иногда кликер просто пропускает этот код. Версия кликера 4.12

« Last Edit: November 14, 2017, 09:13:44 PM by Duff89 »

Duff89

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
Была и у меня такая мысль,но все символы это A-Z,1-9 и . (точка). Т.е никаких кавычек, собак и прочего с чем у Clickermann могут быть проблемы.

Vint

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3935
  • Лечу куда хочу. cman 4.13.014x32, 4.14.003 W10
    • View Profile
Думаю нужно попробовать вынести TFCOUNT("mail.txt") в отдельную строку, не нужно каждый раз заново определять размер.
После каждого доступа к файлу он блокируется на малое время. Даже тупой STRREADLN в цикле без задержек начинает пропускать примерно каждую трёхсотую строку.

TFCOUNT нужно прочитать все строки чтобы посчитать их. Поэтому STRREADLN в той же конструкции сразу может не всегда срабатывать из-за ещё не снятой виндой блокировки.
Тем более необходимости каждый раз считать нет, мы в этот файл не пишем. Вынеси TFCOUNT("mail.txt") за цикл
Code: (clickermann) [Select]
$count = TFCOUNT("mail.txt")
WAITMS(50)
...
//чтение в цикле
$maila = STRREADLN("mail.txt", RND(1, $count))  //присваиваем переменной случайную строку из файла
WAITMS(50)
KEYSTRING($maila, 80)//печатаем строку

!!! Это предположение
« Last Edit: November 15, 2017, 10:01:31 AM by Vint »


Duff89

  • Зашел в гости
  • *
  • Posts: 3
    • View Profile
В общем ситуация разрешилась довольно простым способом) В голову пришла мысль посмотреть сколько строк в файле txt и сколько видит кликер. Оказалось в файле 12 строк, а программа видит как 14,хотя визуально их 12. Скорее всего я нажал 2 раза enter после последней строки, правда не пойму зачем) Поэтому решил проблему просто удалив пустые строки в конце текстового документа, можно также проверять предварительно длину строки, но сейчас это уже лишнее.
Спасибо за советы!
« Last Edit: November 15, 2017, 12:12:26 PM by Duff89 »