Для того, чтобы добавить новый макрос в UMX, вы должны поместить специальный файл описания скрипта в папку /Scripts, расположенную там, где установлен UMX.
Файл должен иметь расширение *.s и именть следующую структуру:
@SCRIPT <scriptname>
@LANG <langid>
<script definition>
В одном файле может быть несколько определений, следующих друг за другом. Признак начала определения - строка @SCRIPT <scriptname>
<scriptname> - это уникальное имя макроса, в The Bat он будет доступен с приставкой "FN", например, скрипт под названием TEST можно будет вызывать из шаблона при помощи макроса %FNTEST.
<langid> - это идентификатор языка: JS - Jscript, VB - VBscript, PAS - pascal.
<script definition> - это сам текст скрипта в соответствии с синтаксисом выбранного в секции @LANG языка.
Скриптовый язык Pascal UMX - это подмножество языка Delphi Pascal, реализованное при помощи библиотеки JVCL. Скрипт является либо
простым арифметическим выражением, либо описанием функции используя синтаксис языка Pascal без строки function:
@SCRIPT TEST1
@LANG PAS
//Первый скрипт
'Hello Word! Time is '+datetimetostr(now);
@SCRIPT TEST2
@LANG PAS
//Второй скрипт
var time:TDateTime;
begin
time:=now;
Result:='Hello Word! Time is '+datetimetostr(time);
end;
Чтобы вызвать скрипт из шаблона, необходимо использовать специальный автосгенерированный макрос %FNxxxxxxx, например, чтобы вызвать скрипт TEST2, надо использовать %FNTEST2
В данный момент можно использовать некоторые стандартные процедуры, функции и типы из модулей Delphi: System, SysUtils, Windows
Чтобы использовать внутренние переменные UMC, необходимо обращаться к ним с префиксом umc_ :
@SCRIPT TEST3
@LANG PAS
'UMC version is '+umc_ver
Вы можете использовать управляющие конструкции:
@SCRIPT TEST4
@LANG PAS
var i:integer;
begin
result:='';
for i:=32 to 255 do
result:=result+chr(i);
end;
@SCRIPT TEST5
@LANG PAS
var i:integer;
begin
result:='';
i:=32;
while i<=255 do begin
if (i<45)or(i>53) then
result:=result+chr(i);
i:=i+1;
end;
end;
Для доступа к параметрам макроса следует использовать функции ParamCount и ParamStr, смысл которых совпадает с аналогичными функциями паскаля.
@SCRIPT PARAMETERCOUNT
@LANG PAS
'Число параметров: '+inttostr(ParamCount)
@SCRIPT PARAMETERLIST
@LANG PAS
var i:integer;
begin
result:='';
for i:=1 to paramcount do result:=nl+inttostr(i)+'. '+paramstr(i);
end;
Желаю успехов в тестировании, присылайте интересные макросы мне на ящик, я включу их в дистрибутив следующих версий UMX. |