В макропоследовательности допускаются следующие функции:
| Математические функции | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=abs(N) | Возвращает абсолютную величину числового аргумента N. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=max(N1,N2) | Возвращает максимальное значение между двумя числовыми аргументами N1 и N2. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=min(N1,N2) | Возвращает минимальное значение между двумя числовыми аргументами N1 и N2. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=mod(N1,N2) | Деление N1 по модулю N2. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=int(V) | Приведение значения выражения V к числу. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Строковые функции | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=index(S1,S2) | Если подстрока S2 содержится в строке S1, то возвращается ее позиция, иначе -1. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=rindex(S1,S2) | Если подстрока S2 содержится в строке S1, то возвращается ее позиция, иначе -1. Поиск ведется от конца строки S1. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Result=replace(Str,Find,Replace[,Cnt]) | В строке Str заменить подстроку Find на подстроку Replace Cnt раз
(укажите Cnt равное 0 или опустите этот параметр для замены всех найденных подстрок). Возвращается результат замены. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=asc(S) | Возвращает код символа S. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=chr(N) | Возвращает символ, заданный кодом N. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=itoa(N[,Radix]) | Конвертирует целое число N в строку.
Значение Radix определяет базу, которая должна использоваться при
преобразовании числа N. Допустимые значения Radix от 2 до 36. Если параметр Radix не указан, то подразумевается база 10. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=atoi(S[,Radix]) | Конвертирует строковое представление строки N в число.
Значение Radix определяет базу, которая будет использоваться при
преобразовании строки S. Допустимые значения Radix от 2 до 36. Если параметр Radix не указан, то функция попытается сама определить в каком виде представлено строковое представление числа. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=len(V) | Возвращает длину выражения V. Числовое значение выражения V приводится к строке, после чего вычисляется длина строки). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=string(V) | Перевод значения выражения V в строку. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=substr(V,N1[,N2]) | Возвращает подстроку из выражения V
начиная с позиции N1 длинной N2. Если параметр N2 не указан или равен -1, то вернется подстрока от позиции N1 до конца строки. Если параметр N2 равен 0, то вернется пустая строка. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=trim(V[,N]) | Удаляет все пробельные символы (пробелы, табуляции, переводы строк и возвраты каретки) из строки V снаружи (N=0 или не указан), слева (N=1) или справа (N=2). | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=xlat(S) | Возвращает транслитерируемую строку Функция аналогична макрокоманде $XLat, но используется в выражениях. Строковый аргумент S обязателен. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=lcase(S) | Преобразует строку S в нижний регистр. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=ucase(S) | Преобразует строку S в верхний регистр. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=date(format) | Возвращает текущую дату/время по формату format
(описание format см. в $Date). Функция аналогична макрокоманде $Date, но используется в выражениях. Строковый аргумент format в отличии от макрокоманды $Date обязателен. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Файловые функции | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=fsplit(path,N) | Разбивает путь path на компоненты и возвращает их комбинацию, в
зависимости от набора флагов N:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=fexist(S) | Проверяет существование файла/каталога S (возвращает 0 или 1). В параметр S допускается использование символов '*' и '?'. В этом случае функция проверяет только первое вхождение файла/каталога. Функция не работает с панелями. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=fattr(S) | Возвращает файловые атрибуты файла/каталога S
В параметр S допускается использование символов '*' и '?'. В этом случае функция возвращает атрибуты только для первого найденного файла/каталога. Функция не работает с панелями. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Панель | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=panel.fexist(panelType,S) | Проверяет существование файла/каталога S из активной (panelType=0) или пассивной (panelType=1) панели (возвращает 0 или 1). В параметр S допускается использование символов '*' и '?'. В этом случае функция проверяет только первое вхождение файла/каталога. Функция работает только с панелями. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=panel.fattr(panelType,S) | Возвращает файловые атрибуты файла/каталога S из активной (panelType=0) или пассивной (panelType=1) панели.
В параметр S допускается использование символов '*' и '?'. В этом случае функция возвращает атрибуты только для первого найденного файла/каталога. Функция работает только с панелями. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=panelitem(panelType,itemIndex,propIndex) | Возвращает различную информацию для элемента панели itemIndex (начиная с 1)
из активной (panelType=0) или пассивной (panelType=1) панели. propIndex может быть
одним из следующих значений:
Дата/время возвращается в формате DD.MM.YYYY HH:MM:SS. Разделители и порядок в дате зависят от региональных настроек. Для получения данных о текущем файле (под курсором) itemIndex должен быть равен 0. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=panel.setpos(panelType,fileName) | Позиционирует курсор на элемент с именем fileName на активной (panelType=0) или пассивной (panelType=1) панели. Возвращает позицию элемента или 0, если такого элемента на панели нет. Например, создать каталог с именем, соответствующим текущей дате в формате YYYYMMDD, если каталог существует - позиционировать на него курсор: %dt=date("%Y%m0%d");
$If (fexist(%dt))
panel.SetPos(0,%dt)
$Else
F7 $Text %dt Enter
$End
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=panel.setpath(panelType,pathName[,fileName]) | На активной (panelType=0) или пассивной (panelType=1) панели выставляет каталог pathName и
позиционирует курсор на элемент с именем fileName (если указан параметр fileName). Возвращает 1 в случае успешной установки каталога и 0, если каталог не существует. Например, на активной панели выставить каталог "C:\WINDOWS", на пассивной - "C:\Program Files", активную панель сделать слева и установить курсор на каталог "FAR": $if(APanel.Left) CtrlU $End panel.SetPath(1,"C:\\WINDOWS") panel.SetPath(0,"C:\\Program Files","FAR") |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=panel.setposidx(panelType,indexItem) | Позиционирует курсор на элемент с индексом indexItem на активной (panelType=0) или пассивной (panelType=1) панели. Возвращает позицию элемента или 0, если такого элемента на панели нет. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Управляющие функции | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=iif(Cond,True,False) | Условный оператор. Если условие Cond верно, то возвращается True-выражение, иначе False-выражение. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Среда исполнения | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=env(V) | Возвращает значение переменной среды V,
например,$if (Env("FARLANG") == "English") что-то делаем $end |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| B=msave(S) | Сохраняет значение глобальной переменной с именем S в область Vars.
В случае неудачи возвращает 0. Например, %%GlobalVars="Foo Bar"; %a=msave("%%GlobalVars");
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=akey(N) | Возвращает название или код клавиши, вызвавшей макропоследовательность.
N = 0 - возвращается код клавиши, N = 1 - возвращается наименование клавиши. Пример см. в описании $AKey |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=clip(Cmd[,S]) | Позволяет производить разнообразные манипуляции с Clipboard в
зависимости от команды Cmd:
Clip(1,"Name;Size\r\n")
Home
$While(!APanel.Eof)
$If(!APanel.Folder && PanelItem(0,0,8))
Clip(2,PanelItem(0,0,0)+";"+PanelItem(0,0,6)+"\r\n")
$End
Down
$End
См. так же $IClip, IClip.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=flock(Nkey,NState) | Позволяет переключить состояние Lock-клавиш (NumLock, CapsLock и ScrollLock). Клавиша Nkey:
Функция капризная (возможно зависание компьютера), поэтому пользоваться ей надо осторожно. Например, макрос, повешенный на CtrlCapsLock (переключение между окнами) должен иметь некую обвязку: CtrlShiftTab %a=flock(1,-1)&1; $while((flock(1,-1)&1)==%a) sleep(50) flock(1,2) $end |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=sleep(N) | Организация задержки в макросе на N миллисекунд.
Отрицательное значение задержки считается ошибкой и функция возвращает 0. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=waitkey([N, [T]]) | Ожидает любую клавишу и возвращает ее название (T=0) или значение (T=1).
Если время ожидания N (миллисекунды) истекло, функция возвращает пустую строку (T=0) или 0 (T=1).
Если параметр N не указан или равен 0, то функция будет бесконечно ждать нажатия клавиши.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=key(V) | Преобразует параметр V в строковый эквивалент названия клавиши. Если V строка, то проверяется правильность написания клавиши и она же возвращается, если V число, то происходит попытка преобразовать значение в текстовый эквивалент названия клавиши. В случае ошибок - возвращается пустая строка. |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=eval(S[,T]) | "Проиграть" (T=0) или проверить (T=1) макропоследовательность заданную строкой S.
Если S содержит синтаксические ошибки, то макропоследовательность исполняться не будет.
FAR компилирует последовательность S. Для режима исполнения (T=0): если нет ошибок, то состояние текущего макроса сохраняется и начинает выполняться последовательность S. После исполнения S прерванный макрос продолжает работать. Функция возвращает 0 в случае успешной компиляции последовательности S или код ошибки:
Локальные переменные - общие для текущего исполняемого макроса и макропоследовательности, исполняемой функцией eval. Например, необходимо по F10 запускать окно проводника для каталога на активной панели, содержимое командной строки должно сохраняться.
%%CmdSave=$If (!CmdLine.Empty) %Flg_Cmd=1;
%CmdCurPos=CmdLine.ItemCount-CmdLine.CurPos+1;
%CmdVal=CmdLine.Value; Esc $End
%%CmdRestore=$If (%Flg_Cmd==1) $Text %CmdVal
%Flg_Cmd=0; %Num=%CmdCurPos;
$While (%Num!=0) %Num=%Num-1; CtrlS $End $End
далее на F10 вешаем макрос:
$If (APanel.Visible && (!APanel.Plugin || (!APanel.Bof &&(APanel.OPIFlags & 0x20))))
Eval(%%CmdSave)
$If (APanel.Current == "..")
.
ShiftEnter
$Else
"%SystemRoot%\\explorer.exe /select,"
$If (Apanel.LFN)
CtrlN
$End
CtrlEnter
$If (!Apanel.LFN)
CtrlN
$End
Enter
$End
Eval(%%CmdRestore)
$End
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Взаимодействие с пользователем | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=msgbox([Title[,Text[,Flags]]]) |
Показывает сообщение Text с заголовком Title.
В параметре Text строки разбиваются символом '\n'. Flags может быть набором следующих значений:
Функция возвращает 0, если пользователь отменил сообщение или выбранный номер кнопки (для первой кнопки - 1, для второй - 2 и так далее). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=prompt("Title"[,"Prompt"[,flags[, "Src"[, "History"]]]]) | Функция позволяет ввести одну строку текста. Параметры: Title - заголовок диалога, Prompt - приглашения для ввода, Src - начальное значение строки ввода, History - имя истории ввода Flags может быть набором следующих значений (аналогичным константам FIB_*):
Например, запросить пароль и вывести его %s=prompt("Password","Input password:",0x02); $Text %s
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Элементы управления | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=checkhotkey(S[,Pos]) | Функция позволяет проверить и получить позицию элемента (начиная с Pos), который содержит горячую клавишу S.
Если S - пустая строка, то функция вернет позицию элемента, который не содержит ни одной горячей клавиши. Возвращает: -1 - если функция вызывана не из своей области (MainMenu, Menu, Disks, UserMenu и Dialog), 0 - ничего не найдено, > 0 - если в меню/диалоге/списке присутствует горячая клавиша S. Например, в меню вызова плагинов (F11) плагину S&R назначена горячая клавиша '7'. Последовательность макрокоманды для редактора: F11 $if (checkhotkey("7")) 7 1 $else Esc AltF7 $end
вызовет плагин, если хоткей назначен или стандартный диалог
поиска, если хоткей не назначен.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| S=gethotkey(N) | Возвращает хоткей S для пункта N, если в меню присутствует горячая
клавиша и текущий "объект" - меню. В противном случае (не меню; нет хоткея; N больше чем количество пунктов меню) возвращает 0. Здесь N - позиция в списке от 1 (0 - текущая). |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=Menu.Select(S[,N]) | В меню позиционирует курсор на первый пункт, содержащий подстроку S.
Поиск подстроки ведется в зависимости от указанного режима N:
Возвращает: -1=ошибка - функция вызвана не для меню, 0=ошибка при позиционировании (нет пункта или пункт задисаблен), иначе - позицию пункта меню. F11 $if(Menu.Select("Advanced compare",0) > 0) Enter $end
Если параметр N не указан, подразумевается полное совпадение.
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=Dlg.GetValue(ID,Type) | Получить различные значения текущего диалога. ID - номер элемента диалога (элементы нумеруются с 1; 0 - само диалоговое окно). Type - тип получаемой информации, зависит от типа элемента. Для самого диалога (ID=0) допустимы следующие значения:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=Editor.Set(Idx,Var) | Для текущей копии редактора изменить настройки.
Возвращает предыдущее значение опций или -1, если данные указаны некорректно. Например, макрос, перемещающий выделенный фрагмент на одну строку вниз: $IClip CtrlX %a=Editor.Set(2,1); Down CtrlV %a=Editor.Set(2,%a); |
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| V=Editor.Sel(Action[,Opt]) | Функция позволяет производить некоторые операции с блоками в тексте (в редакторе, в строках ввода в диалогах, в командной строке).
Например, повторим некоторые сочетания клавиш из Turbo-сред (макрос на сочетание Ctrl-K): %k=waitkey(0,1);
$if(%k==B || %k==b || %k==CtrlB)
editor.sel(2,0)
$else
$if(%k==K || %k==k || %k==CtrlK)
editor.sel(2,1)
$else
$if((%k==C || %k==c || %k==CtrlC) && Selected)
CtrlC
$else
$if((%k==Y || %k==y || %k==CtrlY) && Selected)
CtrlD
$else
eval("F1")
$end
$end
$end
$end
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Работа с закладками | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Функция | Описание | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=BM.Add() | Добавить текущие параметры закладки и обрезать хвост | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=BM.Clear() | Очистить все закладки | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=BM.Del([Idx]) | Удалить закладку с указанным индексом Idx (нумерация начинается с 1). Если параметр Idx не указан или равен 0 - удаляется текущая закладка. | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=BM.Get(Idx,M) | Получить параметры закладки с индексом Idx (нумерация начинается с 1), Idx=0 - текущая закладка. Параметр M может быть одним из следующих:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=BM.Next() | Перейти на следующую закладку | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=BM.Prev() | Перейти на предыдущую закладку | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| N=BM.Stat([M]) | Получить информацию о закладках. Параметр M может быть одним из следующих:
|
|||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| Пример работы с закладками: | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||