1

Тема: AHK: Автоматический перенос строки

Здравствуйте. Как сделать автоматический перенос строки? То есть, если набранный текст превышает определенное количество символов (например: 64), то в первой строке отправляется 62 (оставим 1 символ на пробел, 2 - на две точки), а во второй остальной текст (но в начале должны быть так же две точки, т.к. это перенос текста).

Было бы оочень замечательно, если бы строка переносилась и не разрывала слово, то есть, если 63 символа заканчиваются в середине какого-то слова, то переноситься это слово целиком, а не его часть. Но я понимаю, что это будет сделать трудно. А так, заранее спасибо.

2

Re: AHK: Автоматический перенос строки

Набранный где? Отправляется куда? Каким образом?

3

Re: AHK: Автоматический перенос строки

YMP, забыл указал, извиняюсь. Набранный в чате, чат открывается на F6. Желательно, чтобы перенос строки не работал, если в начале введена команда.

4

Re: AHK: Автоматический перенос строки

Morux2112, а другие два вопроса? Что имеется в виду под "отправляется"? Будете набирать в отдельном окне, а оттуда отправлять в окно чата, разделив на строки?

5

Re: AHK: Автоматический перенос строки

YMP, если я правильно понял, то да. Текст разделяется на 2 части, 1 часть отправляется после нажатия на Enter, а вторая часть, допустим, через 0.2 секунды.

6

Re: AHK: Автоматический перенос строки

Morux2112 пишет:

если я правильно понял

Так это не вам нужно? Если так, то надо выяснить точно, что именно требуется. А лучше бы сам тот человек и объяснил ситуацию. Иначе будет игра в испорченный телефон.

Описание нужно очень конкретное. Я делаю то-то, скрипт делает то-то. От самого начала до самого конца. Общие слова не годятся. Мы НЕ видим вашей ситуации и не знаем, что вы имеете в виду.

7

Re: AHK: Автоматический перенос строки

YMP, я имел ввиду про ваш вопрос, правильно я его понял или нет. Сейчас попробую подробно расписать, что я хочу.

Нажимаешь на F6 (открытие чата), пишешь какой-то текст, но на размер этого текста есть ограничение (90 символов), и при превышении данного лимита текст должен разделиться на несколько частей (в зависимости от размера самого текста). Чтобы это выглядело красиво и правильно, в конце 1-ой строчки и в начале 2-ой должны ставиться две точки (.. ), то есть, ограничение нужно сделать не 90 символов, а 87, чтобы оставить место для пробела и двух точек.

Если я правильно понимаю, то нужно сделать переменную, и если она превышает значение в 87 символов - разделять ее. Только я не знаю как это сделать. Input здесь не прокатит, т.к. он неудобен при написании текста и стирать его можно только BackSpace'om.

8

Re: AHK: Автоматический перенос строки

Morux2112, а чем неудобен Input?

9

Re: AHK: Автоматический перенос строки

YMP, нельзя выбирать символы мышкой, а только стрелочками. Если без Input никак, то уже ладно, можно и с ним.

10

Re: AHK: Автоматический перенос строки

Morux2112

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

Win11x64, AHK v1.1.37.01 (Unicode 64-bit), AHK v2.0.17| AHK-Wiki | Переменные и выражения | RegEx101

11

Re: AHK: Автоматический перенос строки

Я под отдельным окном как раз и имел в виду окно скрипта.

12

Re: AHK: Автоматический перенос строки

YMP, не совсем понимаю как это будет работать. Типо, открывается GUIшка (Edit), туда вписывается текст и далее с ним уже идет работа и он отправляется в чат? Если так, но оно не проканает.

13 (изменено: Morux2112, 2020-12-08 18:01:51)

Re: AHK: Автоматический перенос строки

~F6::
{
Input, chat, V I M, {Enter}
chats := StrLen(chat)
if (chats > 91)
{
chatback := chats-91
chatleft := chats-chatback
SendInput, {F6}
SendInput, ..
SendInput, %chat%
SendInput, {left %chatback%}
SendInput, {BackSpace %chatleft%}
SendInput, {Enter}
autoper := false
}
else
{
}

Я попытался что-то сделать, вышло нечто такое (выше). Оно в большинстве случаев криво стирает текст и при отправлении второй части текста стираются, или наоборот, не стирается больше, чем надо.

Да и в данное ситуации Input не удобен, т.к. человек незапрограммированный механизм и он допускает ошибки при наборе текста. И если это ошибку ты увидишь в конце текста, то просто выбрать мышкой и изменить не получится.

14

Re: AHK: Автоматический перенос строки

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

15

Re: AHK: Автоматический перенос строки

YMP, не подскажешь. как скопировать текст и занести его в переменную?

16

Re: AHK: Автоматический перенос строки

Morux2112, послать в окно чата комбинации клавиш, которые выделяют и копируют текст в буфер обмена. Ну а в скрипте есть переменная Clipboard, там этот текст и должен оказаться. Лучше его скопировать из Clipboard в какую-то свою переменную и уже в ней обрабатывать. Результат помещаете опять в Clipboard и посылаете в окно комбинацию, вставляющую текст из буфера обмена.