Автокликер Clickermann :: Форум

Основной раздел => Общие вопросы => Topic started by: SimplY on July 23, 2020, 12:07:59 PM

Title: Редактировать последнюю строку, если она есть!
Post by: SimplY on July 23, 2020, 12:07:59 PM
Пример:
Молоко
Сахар
Сметана
Творог (1)

Если не найдена строчка творог, то создается новая строчка в тексте и пишется слово Творог (1). Если данная строчка найдена, то Творог (1) заменяется на Творог (2). Затем Творог (3) и далее на одно число больше.

Есть нюансы. Творог не всегда на 4 строчке и может находиться хоть на 20-й, но всегда в последней.

Все, что я умею сделать.
Code: (clickermann) [Select]
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#C)
KEYUP (#CTRL)
$a = FROMCLIP()
WAITMS(50)
#DEFINE EOL: CHAR(13), CHAR(10)
$b = STRCONCAT($a, EOL, "Творог (1)")
WAITMS(50)
TOCLIP($b)
KEYDOWN (#CTRL)
WAITMS (50)
KEYPRESS (#V)
KEYUP (#CTRL)

Но этот скрипт создает всегда последнюю строчку Творог (1), даже если такая строчка уже есть. Это не устраивает.
Молоко
Сахар
Сметана
Творог (1)
Творог (1)
Творог (1)
Творог (1)
Творог (1)

Должно быть так:
Молоко
Сахар
Сметана
Творог (5)
Title: Re: Редактировать последнюю строку, если она есть!
Post by: 4.У.В.@.К on July 24, 2020, 08:44:00 AM
Вариант:
Для теста копируем в буфер текст (без творога):
Молоко
Сахар
Сметана

Запускаем скрипт и смотрим в логе, как меняется буфер.

Code: (clickermann) [Select]
$substr = "Творог" // что ищем
#DEFINE EOL: CHAR(13), CHAR(10)
$a = FROMCLIP()
//--------------------------------
IF(STRPOS($a, STRCONCAT(EOL, $substr)) = 0)
   TOCLIP(STRCONCAT($a, EOL, STRCONCAT($substr, " (1)")))
ELSE
   $count = INT(STRFILTER(STRCUT2($a, STRPOS($a, STRCONCAT(EOL, $substr)) + 2, STRLEN($a)), "1234567890", 1)) + 1
   TOCLIP(STRCONCAT(STRCUT2($a, 1, STRPOS($a, STRCONCAT(EOL, $substr)) - 1), EOL, $substr, " (", $count, ")"))
END_IF
//--------------------------------
LOGCLEAR
LOGWRITE (FROMCLIP())
WAIT(1)