Latest post of the previous page:
Мне кажется, что лучше $exit(). Это все-таки языковой оператор, наравне с $continue и пр.Как вернуть в плагин результат работы макроса?
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: Как вернуть в плагин результат работы макроса?
На худой конец exit(), но не return().
Или же result(), пусть он не завершает макрос, а только лишь определяет возвращаемое значение.
Или же result(), пусть он не завершает макрос, а только лишь определяет возвращаемое значение.
Re: Как вернуть в плагин результат работы макроса?
да, вариант с result() интереснее
но есть еще вариант - глобальная ФАРовская переменная - что-то типа %ResultMacro
%ResultMacro=что-то там;
и... плагин по идеи должен быть готов принять на грудь __int64, либо double, либо wchar_t* (а в последствии и... )
но есть еще вариант - глобальная ФАРовская переменная - что-то типа %ResultMacro
%ResultMacro=что-то там;
и... плагин по идеи должен быть готов принять на грудь __int64, либо double, либо wchar_t* (а в последствии и... )
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Как вернуть в плагин результат работы макроса?
%ResultMacro это, конечно, хорошо. Только, напомню, хотелось бы, чтобы в простейшем случае достаточно было просто выражения. Т.е. чтобы можно было запустить марос "2+2" и получить результат, а не только: "%ResultMacro=2+2"
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Как вернуть в плагин результат работы макроса?
Макс, это ты знаешь, что машина стековая и что результат 2+2 ляжет в вершину стека, но ты это не объяснишь тем, кто не программит.
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: Как вернуть в плагин результат работы макроса?
в догонку - а как ты собираешь вернуть строку плагину?
"2+2" - это неявный $Text "2+2"
"2+2" - это неявный $Text "2+2"
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
Re: Как вернуть в плагин результат работы макроса?
...в общем я так понимаю, что обязательный параметр (любого типа) для $exit решит проблему (главное, чтобы уже готовые макросы не полетели )
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: Как вернуть в плагин результат работы макроса?
Стек/не стек, всё равно нет принципиальной разницы разницы между простейшим и сложнейшим случаем.
Разве сложно добавить в простейший макрос ещё и "ResultMacro=, или Result(...).
Разве сложно добавить в простейший макрос ещё и "ResultMacro=, или Result(...).
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Как вернуть в плагин результат работы макроса?
А зачем объяснять то? Это же для плагинов. Я, естественно, держу в голове MacroLib. Хочу реализовать условие If.
Чтобы можно было написать так:
А в другом случае, например, так:
Не очень удачно, конечно, в условии макроса использовать F11, но это пример
Чтобы можно было написать так:
Code: Select all
If = "Shell && CmdLine.Empty"
Code: Select all
If = "F11 $if (menu.select("имя плагина") > 0) ENTER $exit(1) $else ESC $exit(0) $end"
Last edited by Max Rusov on Mon 17 Jan, 2011 14:21, edited 2 times in total.
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Как вернуть в плагин результат работы макроса?
Да, тут некузявно получается. Конечно, плагин сам может добавлять "$exit( ... )", но как понять, когда надо добавлять, а когда нет?...Skirda wrote:"2+2" - это неявный $Text "2+2"
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: Как вернуть в плагин результат работы макроса?
Если убрать f11, то в условии только menu.select("имя плагина") > 0.
А MacrоLib уже сам может добавить Result
Update
Как понять надо ли добавлять: всё просто: если в макросе УЖЕ есть Result (или $Exit), то не добавлять.
А MacrоLib уже сам может добавить Result
Code: Select all
Result(menu.select("имя плагина") > 0)
Как понять надо ли добавлять: всё просто: если в макросе УЖЕ есть Result (или $Exit), то не добавлять.
Re: Как вернуть в плагин результат работы макроса?
хмм... правильно я понимаю, что синхронный вызов макросов тебе нужен для последнего примера?
We are the Borg. You will be assimilated.
So Say We All!
So Say We All!
-
- Posts: 3651
- Joined: Wed 23 Nov, 2005 11:11
- Location: Москва-Питер
- Has thanked: 2 times
- Been thanked: 19 times
Re: Как вернуть в плагин результат работы макроса?
Только без F11 menu.select не имеет смысла. В этом и суть - в общем случае сложное условие невозможно уложить в формулу. Могут понадобиться локальные переменные, if'ы и пр.John Doe wrote:Если убрать f11, то в условии только menu.select("имя плагина") > 0.
Это не понял. По моему - ты не прав.John Doe wrote:Как понять надо ли добавлять: всё просто: если в макросе УЖЕ есть Result (или $Exit), то не добавлять.
- John Doe
- Бюрократ
- Posts: 13855
- Joined: Wed 27 Apr, 2005 20:42
- Has thanked: 73 times
- Been thanked: 428 times
- Contact:
Re: Как вернуть в плагин результат работы макроса?
В конфиге задано условие вида if="...".
Если в тексте этого условия не встречается $Exit, то плагин оборачивает всё в $Exit(...) и запускает.
В противном случае запускает "как есть".
Т.е. если у нас хитрое условие с F11, то мы должны в нём явно указать где там результат.
Но в большинстве случаев это будет излишним, т.к. чаще условие является простым выражением.
Если в тексте этого условия не встречается $Exit, то плагин оборачивает всё в $Exit(...) и запускает.
В противном случае запускает "как есть".
Т.е. если у нас хитрое условие с F11, то мы должны в нём явно указать где там результат.
Но в большинстве случаев это будет излишним, т.к. чаще условие является простым выражением.