1

Тема: AHK: Можно ли строку исполнить как выражение?

Друзья, подскажите.
Есть строка Str вроде

 Str := "X := a + b"

Можно ли ее обработать как выражение?

2

Re: AHK: Можно ли строку исполнить как выражение?

Есть пара унылых способов, но какая необходимость этого?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

3

Re: AHK: Можно ли строку исполнить как выражение?

Если только под конкретный шаблон... А вообще нельзя сделать скрипт, который сам сочиняет для себя команды и сам же их выполняет.

4

Re: AHK: Можно ли строку исполнить как выражение?

ypppu пишет:

А вообще нельзя сделать скрипт, который сам сочиняет для себя команды и сам же их выполняет.

На самом деле можно, если через 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)
}
Разработка AHK-скриптов:
e-mail dfiveg@mail.ru
Telegram jollycoder

5

Re: AHK: Можно ли строку исполнить как выражение?

Я имел в виду AutoHotkey. Насколько помню, несколько раз предпринимались попытки выполнить команду, взятую из переменной. Предлагались какие-то обходные пути, как то записать выработанный код в файл скрипта и запустить его отдельно. Без костылей пока не получается.

6

Re: AHK: Можно ли строку исполнить как выражение?

Да были темы, и я тоже как то поначалу такую заводил. Но все они заканчивались тем, что в этом нет никакой необходимости.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

7

Re: AHK: Можно ли строку исполнить как выражение?

ypppu пишет:

Я имел в виду AutoHotkey

Так мой пример для AutoHotkey, можешь запустить.

serzh82saratov пишет:

этом нет никакой необходимости

Ну почему же, а например, программа-калькулятор?

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

8

Re: AHK: Можно ли строку исполнить как выражение?

Я тоже имею ввиду AutoHotkey, но только в полном представлении синтаксиса, не все же строки ввиде выражения AutoHotkey подойдут под синтаксис JS.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

9

Re: AHK: Можно ли строку исполнить как выражение?

Вам шашечки или ехать? © Если нужно выполнить небольшой вспомогательный код, ничего страшного, если он будет записан в другом синтаксисе. Если нужен полноценный скрипт, тогда, конечно, только отдельный файл, другого варианта нет.

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

10

Re: AHK: Можно ли строку исполнить как выражение?

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

11

Re: AHK: Можно ли строку исполнить как выражение?

Там проблема в том, что com-объект ScriptControl есть только под 32 bit.

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

12 (изменено: serzh82saratov, 2014-07-21 22:39:38)

Re: AHK: Можно ли строку исполнить как выражение?

А может кто то пояснить необходимость такого калькулятора? Напишите в него слова, он что их сумму вычислит?
Обычно кнопки есть плюс минус итд.
Ну да ладно, если текст соответствует типу плюс минус разделить между цифрами, то можно создавать и файл анк в таком случае. Если текст неверный, то и в VB выскочит ошибка. Так что лучше всё это разбирать в AutoHotkey через известные знаки.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

13

Re: AHK: Можно ли строку исполнить как выражение?

serzh82saratov пишет:

А может кто то пояснить необходимость такого калькулятора?

Можно просто дизайн более удобный сделать, чем у calc.exe. Можно и сумму строк считать, почему бы нет?

Если текст неверный, то и в VB выскочит ошибка.

В VB есть команда, запрещающая сообщения об run-time ошибках.

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

14

Re: AHK: Можно ли строку исполнить как выражение?

В VB есть команда, запрещающая сообщения об run-time ошибках.

Кстати в АНК есть такая возможность?

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

15

Re: AHK: Можно ли строку исполнить как выражение?

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

16

Re: AHK: Можно ли строку исполнить как выражение?

А, точно, забыл.

По вопросам возмездной помощи пишите на E-Mail: serzh82saratov@mail.ru Telegram: https://t.me/sergiol982
Win10x64 AhkSpy, Hotkey, ClockGui

17

Re: AHK: Можно ли строку исполнить как выражение?

Товарищ Next спрашивал, положительного ответа не последовало.

На английском форуме.