From Stealth Client

Jump to: navigation, search

Pascal

Pascal Script - это язык программирования с помощью которого можно писать скрипты для Stealth, реализован на движке PAX.

Скрипт это программа реализующая некий алгоритм(последовательность действий) состоящая из необходимого количества условных операторов и операторов сравнения а так же вызовов функций.

полезные форум-топики касательно языка

есть встроенный редактор\отладчик

Возможности Pascal Script

Подключаемые модули (Uses)

Используя модули, вы можете разбить код на отдельные части и использовать эти части в нескольких скриптах. Программный модуль (unit) представляет собой набор констант, переменных, процедур и функций, которые могут совместно использоваться несколькими скриптами. Каждый модуль аналогичен отдельной программе на Паскале: он может иметь основное тело, которое вызывается перед запуском вашей программы и осуществляет необходимую инициализацию.

Костяк модуля:

unit <identifier>;
 
implementation
uses <modules_list>;    { optional }
{ local descriptions }
{ implementation of procedures and functions }
begin
  { initialization code }
end.


Пример использования

//main script:
program test; 
uses Unit1; 
 
BEGIN 
AddToSystemJournal(MergeStrings('Hello', 'World!')); 
END.
//module Unit1.pas:
unit Unit1; 
 
interface 
 
function MergeStrings(S1: string; S2: string): string; 
 
implementation 
 
function MergeStrings(S1: string; S2: string): string; 
begin 
Result := S1 + ' ' + S2; 
end; 
 
end.

Стоит обратить внимание на эти вещи:

  • uses Unit1; - расширение тут НЕ пишется. может использоваться как файл без расширения, так и с расширением .pas. расширение ".sc" не использовал сознательно, потому что это полноценные паскальные файлы, а не скриптовые модули.
  • имя файла(без расширения) и заголовок юнита - первая строка (unit Unit1;) должны совпадать.
  • модули должны находится рядом с файлом скрипта
  • у модуля может быть свой блок begin-end, т.е. он может быть автономен и не обязательно вызвываться из основного скрипта (достаточно только подключить его к основному скрипту через uses)
  • при множественном uses, например:
//script:
program test; 
uses Unit1,Unit2; 
 
BEGIN 
AddToSystemJournal(MergeStrings('Hello', 'World!')); 
END.
//module:
unit Unit1; 
 
uses Unit2; 
 
interface 
 
function MergeStrings(S1: string; S2: string): string; 
 
implementation 
 
function MergeStrings(S1: string; S2: string): string; 
begin 
Result := S1 + ' ' + S2; 
end; 
 
end.

Unit2 будет включен только один раз. для сравнения - при использовании инклюда содержимое файла вставилось бы в скрипт 2 раза и получилась бы ошибка.



Новые возможности PAX

В стелсе 7.4 введен новый скриптовый движок PAX. Из новых возможностей:

  • поддержка создания классов внутри скриптов.
  • поддержка анонимных типов и методов (anonymous methods, generic types).
  • мультиплатформенность.
  • поддержка overload, override и прочих директив для методов.
  • поддержка helpers для типов.
  • кроме паскаля - поддерживается еще 2 языка - java script, visual basic. Впрочем, в JS еще не введено нескольких критичных возможностей, например runtime парсера.