1 (изменено: Lolykroly, 2021-03-27 11:14:39)

Тема: AHK:ReadLine + AddText


Loop, Read, %A_ScriptDir%\text.txt 
{
 Text := A_LoopReadLine
}
Gui, Add, Text, x100 y200 w300 h23, %Text%

Как вставить в название текста переменную содержащую строку/часть из файла?

FileReadLine, Text, %A_ScriptDir%\text.txt , 1
Gui, Add, Text, x100 y200 w300 h23, %Text%

Так тоже не получается.

2 (изменено: __Михаил__, 2021-03-27 11:42:25)

Re: AHK:ReadLine + AddText

File  := A_ScriptDir "\Test.txt"
FileReadLine, Text, % File, 1
ToolTip, Text:`n%Text%

Gui, Add, Text, x16 y12 w999 h23, % Text
Gui, Show, w1000 h300
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

3

Re: AHK:ReadLine + AddText

Теперь понял в чём была проблема: Путь неверно указан.
Но всё-равно теперь не полностью строку читает, а только первые 2 слова

4 (изменено: Lolykroly, 2021-03-27 12:03:18)

Re: AHK:ReadLine + AddText

А. вобщем понял, он её разбить не может, слишком длинная. Хотя если не задавать изначальную ширину текста то пытается вместить её.
Вот этот момент с разбивкой

__Михаил__ пишет:

ToolTip, Text:`n%Text%

Как каретку ставить чтобы перенос по указанной ширине текста был?
Как организовать перенос/разбивку этой строки? + убрать некоторые слова

Допустим строка состоит из "Перейти по ссылке google.com"
Нужно убрать перейти по ссылке, а оставить только google.com поместив её в A_LoopReadLine,
либо сделать перенос если по w100 ширине указанной в Add, text не хватает места для размещения всей строки.

5

Re: AHK:ReadLine + AddText

Для таких целей проще использовать 'Edit':

Gui, Add, Edit, x16 y12 w999 h23, % Text
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

6

Re: AHK:ReadLine + AddText

File  := A_ScriptDir "\Test.txt"
DelStr := "123"	; Что убрать.
Str_N := "987"			; Заменить на перевод строки.

FileReadLine, Text, % File, 1			; Считывает 1 строку из файла.
StringReplace, Text, Text, % DelStr,, All	; Удаляет все совпадения.
StringReplace, Text, Text, % Str_N, % "`n", All	; Заменяет все совпадения на перевод строки.

Gui, Add, Edit, x16 y12 w999 h100, % Text
Gui, Show, w1000 h300
Return
Win10x64, AHK v1.1.37.01 (Unicode 64-bit) | AHK-Wiki | Переменные и выражения | RegEx101

7

Re: AHK:ReadLine + AddText

Для взаимодействия с данной надписью планировалось использовать другой элемент управления. Чем проще то?

8

Re: AHK:ReadLine + AddText

__Михаил__ пишет:

Str_N := "987" ; Заменить на перевод строки.

Т.е. мне надо заранее знать на каком месте строка не вписывается в ширину? А автоматически это нельзя сделать?

9

Re: AHK:ReadLine + AddText

Можно автоматически - только сложно, ведь текст имеет разную ширину букв, которую придётся высчитывать, ну или использовать моноширинный шрифт.
В предыдущем сообщении я лишь показал как делать удаление и замену текста.

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

10 (изменено: Lolykroly, 2021-03-27 13:03:42)

Re: AHK:ReadLine + AddText

__Михаил__ пишет:

текст имеет разную ширину букв, которую придётся высчитывать, ну или использовать моноширинный шрифт.

А разве размер элементов и размер шрифта не имеет общих связей? Там ведь есть какие-то константы?

11

Re: AHK:ReadLine + AddText

Никогда особо этим не занимался, тут нужны более опытные кодеры.
Видел костыль, в котором создавалось окно, в нём выводили нужный текст, затем извлекали кол-во пикселей которое требуется на текст. Далее можно по некоторым условиями делить исходный текст для использования.

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

12

Re: AHK:ReadLine + AddText

Lolykroly пишет:

А разве размер элементов и размер шрифта не имеет общих связей? Там ведь есть какие-то константы?

Не имеет. Можно взять большой ЭУ типа Text и сделать его мелким шрифтом. Можно взять маленький ЭУ Text и сделать его большим шрифтом. В общем, одно другому не мешает.