Инструменты пользователя

Инструменты сайта


ru:tcmediainfo:documentation:scripts

Общие понятия

Написание скриптов позволяет полностью изменить вывод информации под ваши нужды. В плагине используется скриптовый движок с упрощенным Pascal-подобным синтаксисом.

Однако важно помнить, что сложные скрипты замедляют работу плагина.

Типы данных

Все переменные имеют тип Variant. Это означает, что во многих случаях вы можете использовать ее значение без дополнительных преобразований типов. Однако в некоторых случаях может потребоваться явное приведение типов, для этого предусмотрены функции: Integer, Number и String.

Также в выражениях могут использоваться константы True и False.

Переменные

Переменные объявлять не надо, они при необходимости создаются динамически при присваивании им значений. Тип определяется по последнему присвоенному значению, типовой контроль при присваивании не выполняется. То есть если существующей числовой переменной присвоить строку, ее тип изменится.

Операции

В выражениях поддерживаются следующие операции:

Арифметические+, -, *, /, ^ (степень), SHL, SHR
БитовыеBITOR,BITAND,BITXOR,BITNOT
Логические>, <, >=, <=, =, <>, AND, OR, NOT

Порядок выполнения операций стандартный.

Блоки

Блок необходимо использовать там, где необходимо объединить несколько операций.

begin
 ...
end;

Условия

Простое условие. Проверяет результат <expression>, если он True, то выполняется <statement1>, если False — то <statement2>.

if <expression> then
 <statement1>
else
 <statement2>;

Условие-переключатель. Проверяет соответствие результата <expression> заданным значениям. Может содержать else для всех остальных значений, не указанных явно.

case <expression> 
 <value1>[,<value2>[, <valueN>]]:
   <statement1>;
 <value1>[..<value2>]:
   <statement2>;
 else 
   <statement3>;
end;

Циклы

Цикл выполняет <statement> от значения <value1> до <value2> с шагом 1.

for <value1>:=<expression> to <value2> do
 <statement>;

Цикл выполняет <statement> от значения <value1> до <value2> с шагом -1.

for <value1>:=<expression> downto <value2> do
 <statement>;

Цикл выполняет <statement> до тех пор, пока значение <expression> истинно.

while <expression> do
 <statement>;

Цикл выполняет <statement> до тех пор, пока значение <expression> не станет истинным.

repeat
 <statement>;
until <expression>;

Прочие операторы

Продолжение цикла. Может быть использован только в циклах.

continue;

Прерывание цикла. Может быть использован только в циклах.

break;

Выход из процедуры или функции. Пр нахождении в основном скрипте завершает скрипт.

exit;

Переход на метку. В настоящее время использование оператора не рекомендуется в целях сохранения понятности кода.

label <value>
...
goto <value>

Пользовательские процедуры и функции

Поддерживаются процедуры и функции на языке интерпретатора. В списке параметров процедур и функций необходимо только перечислить имена формальных параметров.

Если в качестве параметра функции или процедуры передается глобальная переменная интерпретатора, этот параметр для данного вызова считается VAR-параметром и его изменение внутри функции изменит значение глобальной переменной. В то же время все глобальные переменные интерпретатора внутри функции или процедуры ведут себя как локальные переменные, которым присвоены начальные значения, совпадающие со значениями одноименных глобальных переменных. В процедурах и функциях доступны их значения, которые можно изменить, но после выхода из процедуры или функции значение глобальной переменной не изменится. Все новые переменные, созданные внутри процедур и функций, являются локальными и после выхода из процедуры/функции они исчезнут. Таким образом, в процедурах и функциях можно использовать любые имена для локальных переменных, не опасаясь что они совпадут с именами глобальных переменных.

Процедуры не возвращают значений:

MyProc([<expression1>[, <expressionN>]]);
 
procedure MyProc([<value1>[, <valueN>]]);
begin
...
end;

Функции возвращают значения посредством специальной переменной result:

<value>:=MyFunc([<expression1>[, <expressionN>]]);
 
procedure MyFunc([<value1>[, <valueN>]]);
begin
...
result=<expression>;
end;

Библиотеки функций

Есть возможность реализовать библиотеки функций, которые можно подключать с помощью операторов uses и include.

Использование uses загружает только функции и процедуры, которые затем можно использовать в своем скрипте. Наиболее частый сценарий использования.

uses "LibName";

Использование include вставляет всё содержимое библиотеки в место скрипта, где использована директива.

include "LibName";
ru/tcmediainfo/documentation/scripts.txt · Последнее изменение: 2022/10/14 23:43 — loopback

Donate Powered by PHP Valid HTML5 Valid CSS Driven by DokuWiki