1

Тема: AHK: Формирование "expression"

Доброго времени суток!
Столкнулся с одной проблемой. Задача стоит в том что бы в готовом скрипте (exe) пользователь в файл мог писать условия,
а скипт должен эти условия считывать.
Как из строки можно сформировать условие для оператора IF?

stroka := "5 < 3"

Такие способы не работают:

if stroka
MsgBox, Yes
else
MsgBox, No
if %stroka%
MsgBox, Yes
else
MsgBox, No

Как это можно реализовать?

2 (изменено: Foma, 2022-02-11 13:04:57)

Re: AHK: Формирование "expression"

Чтобы дать пользователю вводить что-то простое, можно использовать http://script-coding.com/AutoHotkey/Input.html
Иначе придётся использовать GUI http://script-coding.com/AutoHotkey/GUIControls.html
И наверное записывать результат в .ini http://script-coding.com/AutoHotkey/IniWrite.html

3

Re: AHK: Формирование "expression"

Foma, спасибо. Но вы совсем не поняли суть вопроса.

4

Re: AHK: Формирование "expression"

AHK не может воспринимать строку, как код. Решение зависит от степени сложности вводимых выражений. Если всегда такого типа, как "5 < 3", тогда можно обойтись просто парсингом.

Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Формирование "expression"

andrey.a.polyakov.b2c

Напишите конкретно что нужно получить в итоге. В коде 'if stroka' вернёт 'True' (истина) - это неверный подход, так как нет условия проверки кроме как наличие данных в строке.

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

6

Re: AHK: Формирование "expression"

__Михаил__, есть текстовый файл. В нем задается условие пользователем

$Тест макроса If
Macros{"n":"If","exp":"3>4","tru":"Привет","fal":"Пока"}

И нужно что бы exp скрипт понимал как условие, а не как текст.

7 (изменено: __Михаил__, 2022-02-14 18:55:58)

Re: AHK: Формирование "expression"

По вашему каждый пользователь обязан знать язык программирования? Нет, это вы должны добиться того, чтобы ваша программа считывала настройки таким образом чтобы их можно было применить.
AHK не поддерживает прямого динамического подставленния переменных с их дальнейшим выполнением как в других языках (например 'Eval' / 'Exec' в Питоне).

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