Тема: AHK: Можно ли строку исполнить как выражение?
Друзья, подскажите.
Есть строка Str вроде
Str := "X := a + b"
Можно ли ее обработать как выражение?
Вы не вошли. Пожалуйста, войдите или зарегистрируйтесь.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться
Друзья, подскажите.
Есть строка Str вроде
Str := "X := a + b"
Можно ли ее обработать как выражение?
Есть пара унылых способов, но какая необходимость этого?
Если только под конкретный шаблон... А вообще нельзя сделать скрипт, который сам сочиняет для себя команды и сам же их выполняет.
А вообще нельзя сделать скрипт, который сам сочиняет для себя команды и сам же их выполняет.
На самом деле можно, если через COM воспользоваться функциональностью других скриптовых языков, где есть функция Eval().
Например JScript:
JS := GetObjJScript()
MsgBox, % JS.Eval("a = 5; b = 10; x = a + b; x")
GetObjJScript()
{
if !FileExist(WscPath := A_ScriptDir . "\JS.wsc")
FileAppend,
(
<component>
<public><method name='eval'/></public>
<script language='JScript'></script>
</component>
), % WscPath
Return ComObjGet("script:" . WscPath)
}
Я имел в виду AutoHotkey. Насколько помню, несколько раз предпринимались попытки выполнить команду, взятую из переменной. Предлагались какие-то обходные пути, как то записать выработанный код в файл скрипта и запустить его отдельно. Без костылей пока не получается.
Да были темы, и я тоже как то поначалу такую заводил. Но все они заканчивались тем, что в этом нет никакой необходимости.
Я имел в виду AutoHotkey
Так мой пример для AutoHotkey, можешь запустить.
этом нет никакой необходимости
Ну почему же, а например, программа-калькулятор?
Я тоже имею ввиду AutoHotkey, но только в полном представлении синтаксиса, не все же строки ввиде выражения AutoHotkey подойдут под синтаксис JS.
Вам шашечки или ехать? © Если нужно выполнить небольшой вспомогательный код, ничего страшного, если он будет записан в другом синтаксисе. Если нужен полноценный скрипт, тогда, конечно, только отдельный файл, другого варианта нет.
Калькулятор имеется, правда тоже посредством VB скрипта, но зато без костыля в виде промежуточного файла.
Там проблема в том, что com-объект ScriptControl есть только под 32 bit.
А может кто то пояснить необходимость такого калькулятора? Напишите в него слова, он что их сумму вычислит?
Обычно кнопки есть плюс минус итд.
Ну да ладно, если текст соответствует типу плюс минус разделить между цифрами, то можно создавать и файл анк в таком случае. Если текст неверный, то и в VB выскочит ошибка. Так что лучше всё это разбирать в AutoHotkey через известные знаки.
А может кто то пояснить необходимость такого калькулятора?
Можно просто дизайн более удобный сделать, чем у calc.exe. Можно и сумму строк считать, почему бы нет?
Если текст неверный, то и в VB выскочит ошибка.
В VB есть команда, запрещающая сообщения об run-time ошибках.
В VB есть команда, запрещающая сообщения об run-time ошибках.
Кстати в АНК есть такая возможность?
#ErrorStdOut
abc
А, точно, забыл.
Товарищ Next спрашивал, положительного ответа не последовало.
Страницы 1
Чтобы отправить ответ, вы должны войти или зарегистрироваться