Неофициальный сайт автоматизаторов ИС-Банк | |||||||||||||||
Обновлена: 04.05.2006 | |||||||||||||||
|
Использование GetCmdLineParmНаверное многие озадачивались, но не все знают, как получить в макрос Параметры выполнения установленные для данного модуля в соответствующем поле при настройке меню пользователя. Оказывается совсем несложно. И для этого надо использовать процедуру 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(pMode) msgbox(pMode); END; var prm, res; if (GetCmdLineParm("Mode",prm)) Main(int(prm)); exit(1); end; При наличии параметра Mode в строке параметров выполнения пункта меню для данного макроса, при выборе данного пункта меню, сразу запустится процедура Main(pMode). При импорте модуля в другой макромодуль, параметр не будет получен и процедура Main не запустится. 2. Получение параметров из командной строки: Воспользуемся макросом C.MAC из предыдущего примера. Рисуем файлик C.BAT следующего вида: rslbmv32.exe 9999 parol ..\mac\c.mac -prm1:%1 Стартуем батник C.BAT ПРЕВЕД!!! Получаем на экранчике MsgBox с ПРЕВЕДОМ! Для трехзвенки содержимое C.BAT должно выглядеть следующим образом: term.exe -p"rslbmv32.exe 9999 parol ..\mac\c.mac -prm1:%1 (C) Хондожко И.В., 2006 г. |
E-mail : ilya_hondo@mail.ru |