Author Topic: Не могу побороть STRFILTER  (Read 2051 times)

0 Members and 1 Guest are viewing this topic.

Smart77

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Не могу побороть STRFILTER
« on: February 24, 2017, 09:14:06 PM »
Всем добрый вечер. суть проблемы такая
имеем сохраненную в файл страницу, из этого файла нужно удалить все строки которые начинаются с 0x0D  (т.е. с интера),
перепробовал почти все, но вместо выбивания интера мы имеем в файлах число 13 (десятичный код интера)
т.е. я не могу указать STRFILTER четко выбрать и убрать все строки которые начинаются с интер (возврат каретки) (перепробовал все коды интера и знаки перед "" [] {} менял кодировки текстового файла от 866 до 1251 и пр.
что делаю не так?
вот код
DEFINE($aaa,1)                                                             
$ENTER = 0x0D
start:
TFWrite ("filtrstrok.txt", STRREADLN ("Buffer.txt", $aaa))
$Stroka = STRREADLN ("filtrstrok.txt", $aaa)
$Stroka2 = STRFILTER ($Stroka, " ", 0)
$Stroka2 = STRFILTER ($Stroka, [0x0D], 0)
TFWRITE ("output.txt", $Stroka2)
INC ($aaa, 1)
IF($aaa = $var)
HALT
END_IF
GOTO (start)

Атеист

  • Guest
Re: Не могу побороть STRFILTER
« Reply #1 on: February 24, 2017, 09:52:17 PM »
Code: (clickermann) [Select]
TFREADARR("Buffer.txt", $input_arr) // загружаем исходный файл в память (в массив $input_arr)
$input_arr_size = ARRSIZE($input_arr) // размер массива $input_arr

FOR($n = 0, $n < $input_arr_size)
 
   IF(STRPOS($arr[$n], "0x0D") ! 1) // если В НАЧАЛЕ строки НЕТ субстроки "0x0D"
      ARRPUSH($output_arr, $arr[$n]) // то такую строку сохраняем в массив $output_arr, прочие строки игнорируем
   END_IF
   
END_CYC

// сохраняем $output_arr в файл output.txt (перед сохранением, файл output.txt будет очищен)
TFWRITEARR("output.txt", $output_arr)

HALT

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Не могу побороть STRFILTER
« Reply #2 on: February 24, 2017, 10:08:02 PM »
В кликермане это невозможно.

Smart77

  • Зашел в гости
  • *
  • Posts: 6
    • View Profile
Re: Не могу побороть STRFILTER
« Reply #3 on: February 24, 2017, 10:30:58 PM »
Жаль.
Ладно есть еще один трабл, не могу победить набор текста в RU раскладке в IE,
при таком виде

KEYSTRING("доставка, обедов в офис.")

когда курсор в строке поиска на странице яндекса вводит только знаки препинания пр.  вот что выходит "     ,     . "буквы выпадают.
вышел сменой раскладки на анг и яндекс сам меняет текст на русский. Но это не выход
пробовал принудительно менять раскладки в IE через кликер не помогает.
Win7-64, Ie11

Атеист

  • Guest
Re: Не могу побороть STRFILTER
« Reply #4 on: February 24, 2017, 11:26:24 PM »
Дежавю! http://crapware.aidf.org/forum/index.php?topic=1122.msg4971#msg4971  :)

Code: (clickermann) [Select]
$srt_count = TFCOUNT("Buffer.txt") // определяем размер исходного файла "Buffer.txt"

FOR($n = 1, $n < $srt_count + 1) // начнем чтение из файла с НЕ ПУСТОЙ строки (если первая всегда пустая, то со вотой, и т.д.)
   
   // далее, будем фильтровать строку от ненужных смволов, придется определить, какие символы должны остаться в строке поле фильтрации
   // ИСКОМУЮ комбинацию символов - "0x0D", естественно тоже нужно оставить
   
   $srt = STRFILTER(TFREAD("Buffer.txt", $n), "абвгдеёжзийклмнопрстуфхцчшщъыьэюяАБВГДЕЁЖЗИЙКЛМНОПРСТУФХЦЧШЩЪЫЬЭЮЯabcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ0123456789!,;:", 1)
   
   IF(STRPOS($srt, "0x0D") ! 1) // если В НАЧАЛЕ строки НЕТ субстроки "0x0D"
      ARRPUSH($output_arr, $srt) // то такую строку сохраняем в массив $output_arr, прочие строки будут проигнорированы
   END_IF 
END_CYC

TFWRITEARR("output.txt", $output_arr) // сохраняем $output_arr в файл output.txt (перед сохранением, файл output.txt будет очищен)
HALT

Oraven

  • Супермодератор
  • Герой форума
  • *
  • Posts: 3685
  • Котэ
    • View Profile
Re: Не могу побороть STRFILTER
« Reply #5 on: February 25, 2017, 07:50:49 AM »
Попробуй вот так
Code: (clickermann) [Select]
LCLICK(607,674) // клик по полю ввода
WAITMS(50)
HSET(HGET(607,674),1) // включаем оконный режим по координате
WAITMS(50)
KEYSTRING("Доставка, обедов в офис.") // отправляем в окно текст
WAITMS(50)
HSET(0,0) // Выключаем оконный режим

HALT

Для удобства можно написать это как подпрограмму
Code: (clickermann) [Select]
SUB(String, $x,$y,$text) // пишем подпрограмму в верхней части скрипта, до основного кода.
   LCLICK($x,$y)
   WAITMS(50)
   HSET(HGET($x,$y),1)
   WAITMS(50)
   KEYSTRING($text)
   WAITMS(50)
   HSET(0,0)
END_SUB

// вызов подпрограммы с передачей координаты и текста
String(607,674,"Доставка, обедов в офис.")