Наверное многие озадачивались, но не все знают, как получить в макрос Параметры выполнения установленные для данного модуля в соответствующем поле при настройке меню пользователя. Оказывается совсем несложно. И для этого надо использовать процедуру GetCmdLineParm.
С помощью этой же процедуры можно получить параметры запуска макроса из командной строки, как в 2х-, так и в 3х-звенной архитектуре.
GetCmdLineParm(pParmName:string, pParmValue:variant) : bool — Возвращает параметр выполнения с именем заданным в pParmName во второй параметр процедуры pParmValue. В случае, если параметр с заданным именем не найдет, процедура возвращает FALSE, в случае успеха — TRUE.
1. Получение параметров выполнения макромодуля:
Рисуем макрос С.MAC
import BankInter; var prm, res; if (GetCmdLineParm("prm1",prm)) Msgbox(prm); exit(1); end;
При этом строка параметров пункта меню должна выглядеть примерно так
"-prm1:123 -prm2:SET"
Иногда бывает необходимо один и тот же макрофайл вызывать из меню и импортировать в другие макромодули. Это весьма проблематично, т.к. при вызове макромодуля из меню необходимо, чтобы сразу стартовался какой либо код, а вот при импорте — это наоборот недопустимо. Ниже приведен пример, как это можно обойти, используя GetCmdLineParm.
import BankInter; macro Main( mode ) if (mode != null) msgbox("Стартован в режиме ", mode); end; end; var mode, res; if (GetCmdLineParm("mode",mode)) Main(mode); else println("Нет парамтера mode. Ничего не делаем"); end;
При наличии параметра Mode в строке параметров выполнения пункта меню для данного макроса, при выборе данного пункта меню, сразу запустится процедура Main(pMode). При импорте модуля в другой макромодуль, параметр не будет получен и процедура Main не запустится.
2. Получение параметров из командной строки:
Воспользуемся макросом C.MAC из предыдущего примера.
Рисуем файлик C.BAT следующего вида:
для 5.50.003.66 и выше
startbnk.exe 9999 parol /mod:R /exec:4002 /mac:..\mac\c.mac -prm1:%1
для более старых 5.50
startbnk.exe 9999 parol /mod:R /exec: /mac:..\mac\c.mac -prm1:%1
или для 5.00
rslbmv32.exe 9999 parol ..\mac\c.mac -prm1:%1
Стартуем батник
C.BAT ПРЕВЕД!!!
Получаем на экране MsgBox с ПРЕВЕДОМ!
Для трехзвенки содержимое C.BAT должно выглядеть следующим образом:
для 5.50.003.66 и выше
term.exe -p"startbnk.exe 9999 parol /mod:R /exec:4002 /mac:..\mac\c.mac -prm1:%1
для более старых 5.50
term.exe -p"startbnk.exe 9999 parol /mod:R /exec: /mac:..\mac\c.mac -prm1:%1
или для 5.0
term.exe -p"rslbmv32.exe 9999 parol ..\mac\c.mac -prm1:%1