Использование 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( 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

Добавить комментарий