1 (изменено: p.polena, 2017-11-25 19:21:50)

Тема: AHK: Поиск текста из буфера в файле .txt

Здравствуйте. Подскажите, как реализовать при помоши AHK:
1. Имеется документ (111.txt) с набором фраз (20 - 30 шт.)
2. Нужно при копировании текста (фразы) в буфер из любой программы искать его в 111.txt и подавать эвуковой сигнал, если таковой найден.
   Спасибо.

2

Re: AHK: Поиск текста из буфера в файле .txt

RegExMatch. Переменная, содержащая буфер обмена называется Clipboard.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

3

Re: AHK: Поиск текста из буфера в файле .txt

Пример можно?

4

Re: AHK: Поиск текста из буфера в файле .txt

Примеры в справке. Там есть все материалы, для достижения вашей цели.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

5

Re: AHK: Поиск текста из буфера в файле .txt

По RegExMatch есть перевод в соответствующей ветке форума. Изменения в буфере отлавливаются OnClipboardChange.

6

Re: AHK: Поиск текста из буфера в файле .txt

Не под силу оказалось мне решить эту задачу. Посему прошу поделиться хотя бы примерным наброском данного AHK.

7

Re: AHK: Поиск текста из буфера в файле .txt

Ну что конкретно вам не удалось? Вы справку читали?

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

8 (изменено: Phoenixxx_Czar, 2017-11-29 03:24:39)

Re: AHK: Поиск текста из буфера в файле .txt

Решение проблемы с кодировкой русского текста в буфер обмена найдите сами.

#Persistent
return

OnClipboardChange:
if (A_EventInfo == 1)
{
	FileRead, temp_text, 1111.txt
	if temp_text contains % ClipBoard
	{
		SoundBeep
	}
	temp_text := ""
}
return

9

Re: AHK: Поиск текста из буфера в файле .txt

Phoenixxx_Czar, зачем здесь A_EventInfo?
Зачем каждый раз считывать текстовый файл?
Contains здесь явно неверный оператор.

10

Re: AHK: Поиск текста из буфера в файле .txt

Не соглашусь только с считыванием файла каждый раз: нам же не известно сколько времени пройдет от первого копирования текста до второго, третьего и т.д. Может там уже файлик 100 раз переписался.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

11 (изменено: svoboden, 2017-11-29 18:22:42)

Re: AHK: Поиск текста из буфера в файле .txt

Вроде так можно искать совпадения через RegEx:

coat =
(
other
is
red
)

Output := RegExMatch(coat, "\b" . clipboard . "\b")
if Output != 0
MsgBox нашло совпадение

12 (изменено: Malcev, 2017-11-29 18:32:15)

Re: AHK: Поиск текста из буфера в файле .txt

Мимо.

clipboard := "стол"
coat =
(
стол
is
red
)

Output := RegExMatch(coat, "\b" . clipboard . "\b")
if Output != 0
MsgBox нашло совпадение

Ну и в задани требуется искать совпадение фраз, а не слов во фразах.

13 (изменено: svoboden, 2017-11-29 19:04:40)

Re: AHK: Поиск текста из буфера в файле .txt

Ну, у меня ищет фразы

clipboard := "Is other off"

coat =
(
her
other
Is other off
)

Output := RegExMatch(coat, "\b" . clipboard . "\b")
if Output != 0
MsgBox совпадение найдено

, а про русские буквы не знал. Так, такой вариант лучше, чем ничего же.

14 (изменено: Malcev, 2017-11-29 19:14:26)

Re: AHK: Поиск текста из буфера в файле .txt

У вас ищет слова в фразах.
И почему вы не используете отступы?

clipboard := "other"

coat =
(
her
other
Is other off
)

Output := RegExMatch(coat, "\b" . clipboard . "\b")
if Output != 0
   MsgBox совпадение найдено

15

Re: AHK: Поиск текста из буфера в файле .txt

Malcev пишет:

И почему вы не используете отступы?

Какие отступы? А слова, конечно, ищет, чего они не должны искаться?

16

Re: AHK: Поиск текста из буфера в файле .txt

svoboden пишет:

Какие отступы?

https://ru.wikipedia.org/wiki/%D0%9E%D1 … %B8%D0%B5)

svoboden пишет:

А слова, конечно, ищет, чего они не должны искаться?

Вы на самом деле не понимаете разницу или троллите?

17

Re: AHK: Поиск текста из буфера в файле .txt

Ну, я не хотел писать тэсу, чтобы он шел читать справку, а показать хоть какой-нибудь пример.

18

Re: AHK: Поиск текста из буфера в файле .txt

Самый простой способ разделять фразы каким-нибудь невстречающимся в них знаком и искать через InStr.

19 (изменено: p.polena, 2017-11-29 20:43:20)

Re: AHK: Поиск текста из буфера в файле .txt

Спасибо всем, кто помогает. У меня пока не получается сделать то, что нужно. Попробую конкретизировать задачу. В электронных письмах имеются несколько десятков позиций. Некоторые ненужные. При копировании одной из позиций (в буфер), нужно автоматически сравнить с "чёрным списком" и подать некий знак, для понимания её (позиции) нужности-ненужности. Список состоит из 30-60 фраз. Изменяется редко. Не обязательно документ для сравнения должен быть в .txt. Можно поместить набор фраз в AHK.
Справка перечитана. Выкладывать результаты потуг стеснительно.

20

Re: AHK: Поиск текста из буфера в файле .txt

txt = |фраза1|фраза2|фраза3|
clipboard = фраза1
If InStr(txt, "|" Clipboard "|")
   msgbox найдено

21

Re: AHK: Поиск текста из буфера в файле .txt

p.polena, вы так и не ответили. На каком этапе вы остановились? Я не помогу вам, если вы не будете проявлять активность в обучении.

Когда вы говорите что не можете сделать, вам всего-лишь не хватает фантазии придумать какой-нибудь костыль.

22

Re: AHK: Поиск текста из буфера в файле .txt

p.polena пишет:

В электронных письмах имеются несколько десятков позиций
...
30-60 фраз

Фразы разделены переносом строки что ли? Думаю, в Ваших планах не было 30-60 раз нажимать Ctr+C, Ctrl+V.

23 (изменено: p.polena, 2017-11-29 23:00:24)

Re: AHK: Поиск текста из буфера в файле .txt

ypppu, копирую одну фразу-позицию. Автоматически сравнивается со списком. Если совпадение, то пропускаю и перехожу к следующей фразе. Не совпадение. Этот позицию инвойса в работу.

24

Re: AHK: Поиск текста из буфера в файле .txt

Чем отделены друг от друга фразы? AutoHotkey во многих случаях позволяет избавиться от рутины с копированием.

25

Re: AHK: Поиск текста из буфера в файле .txt

Так что вы в результате хотите получить - список фраз, которых нету в чёрном списке?

26

Re: AHK: Поиск текста из буфера в файле .txt

ypppu, как письмо отформатировано. Не от меня зависит. В FF при выделении текста у меня автокопирование. По списку последовательно каждую фразу-позицию проверяю на актуальность. Часто бывают ненужные повторы выполненных заказов.
Malcev, в результате должно быть так:
при выделении (копировании в буфер) любой фразы, которая есть в подготовленном списке (файл .txt, либо можно поместить в AHK), подаётся сигнал при её (фразы) наличии в оном.

27

Re: AHK: Поиск текста из буфера в файле .txt

Тогда вам уже накидали примеров, чтобы сделать задуманное.

28

Re: AHK: Поиск текста из буфера в файле .txt

txt = |а|б|в|
clipboard := "other"
coat =
(
her
other
Is other off
)
If InStr(txt, "|" Clipboard "|")
   msgbox найдено

Совсем не туда?

29

Re: AHK: Поиск текста из буфера в файле .txt

Нет. Читайте справку.

30 (изменено: Alectric, 2017-11-30 11:42:52)

Re: AHK: Поиск текста из буфера в файле .txt

txt = |а|б|в|

loop
{
  sleep,10
  If InStr(txt, "|" Clipboard "|")
    tooltip найдено
  else
    tooltip
}
Win 7 x64
AHK v1.1.33.02
                       Справка тебе в помощь.

31

Re: AHK: Поиск текста из буфера в файле .txt

Всем спасибо. Задача решена.

32

Re: AHK: Поиск текста из буфера в файле .txt

Alectric

Спасибо за полезный код. Но столкнулся с проблемой: если в переменой txt занесено примерно 752 фразы (16151 символов), то скрипт ещё успешно работает и выполняет свою задачу.

Если же я пытаюсь добавить ещё больше фраз, то скрипт матерится и не запускается (Error: This line does not contain a recognized action). Подскажите пожалуйста, как обойти этот лимит.

33

Re: AHK: Поиск текста из буфера в файле .txt

vlad1986
Наверно проблема в том, что максимальная длина строки в скрипте может быть 16383 символа. Чтобы обойти это, можно разбить заполнение переменной на несколько этапов, в каждом из которых будет добавляться меньшее количество символов, чем 16383:

var := "one,"
var .= "two"
MsgBox, % var
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder