А р с е н а л ь н а я б а ш н я
Краткое описание Innerfuse Pascal Script Innerfuse Pascal Script — встраиваемый в приложение "движок" для выполнения скриптов непосредственно в программе.
Поддерживает: - стандартные типы: Byte, Shortint, Char, Word, SmallInt, Cardinal, Longint, Integer, String, Real, Double, Single, Extended, Comp, Boolean, Array, Record, Variant;
- классы (также объявленные во внешнем скрипте);
- переменные, константы;
- библиотеки для работы с DLL, вызова функций Delphi, преобразований типов, работы с визуальными объектами;
- стандартные выражения: Begin/End, If/Then/Else, For/To/Downto/Do, Case x Of, Repeat/Until, While, With, Uses, Try/Except/Finally Exit, Continue, Break;
- функции, процедуры, параметры Array of Const, Var;
- позволяет одновременно в одном приложении запускать несколько экземпляров PascalScript и при этом каждый из них могут между собой иметь интерфейс.
Как пишет автор, синтаксис
Innerfuse Pascal Script является практически тем же, что и в
Delphi Object Pascal за исключением указателей, которые в данном продукте не поддерживаются. Сам "движок" не является компонентом, это - набор модулей (ifspas (основной), ifs_utl, ifs_var, ifs_obj). Чтобы его использовать в своём приложении, нужно: uses ifspas, ifs_utl, ifs_var; var ScriptEngine: TIFPasScript; //В событии onCreate формы: ScriptEngine := TIfPasScript.Create(nil); //В событии OnDestroy формы: ScriptEngine.Free; //В событии, по котоорому запускается скрипт (исключая редактор, //который содержит текст скрипта): ScriptEngine.SetText(memo1.text); Scriptengine.RunScript; //Теперь можно осуществлять проверку ошибок Наличествует обработка ошибок с помощью типа
TIFSError.
TIFSError используется для запоминания текущей ошибки, выданной при работе скрипта. TIFSError = record ErrorCode: TIfPasScriptError; ErrorPosition: Longint; ErrorParam: String; ErrorModule: string; end; TIfPasScriptError - тип, содержащий коды ошибок. Имеется возможность "отлавливать" целый набор ошибок, таких как: "Compile Time" Errors: ENoError - нет ошибки ECanNotReadProperty ECanNotWriteProperty EUnknownIdentifier EIdentifierExpected ESemicolonExpected EBeginExpected EDuplicateIdentifier EUnexpectedEndOfFile EColonExpected ESyntaxError EStringError EErrorInStatement EAssignmentExpected ETypeMismatch EErrorInExpression ERoundOpenExpected ERoundCloseExpected EVariableExpected ECommaExpected EThenExpected EPeriodExpected EParameterError (RunScriptProc) EToExpected EDoExpected EOfExpected EEndExpected EOpenBlockExpected ECloseBlockExpected EConstantExpected EIsExpected EIntegerExpected ECloseRoundExpected EUntilExpected EClassNotAllowedHere EClassTypeExpected ECanNotOverride EUnsatisfiedForward EConstructorExpected ENoInheritedAllowedHere ECanNotReadOrWriteProperty EObjectExpected ECommentError ECharError EExceptExpected EStringExpected EUnitNotFound ENotSupported "Runtime" Errrors EClassNotCreated EOutOfRange EDivideByZero EExitCommand EClassAlreadyFreed EClassReferenceNotAssigned EVariantIsNil ECustomError EOutOfMemoryError Имеется возможность выполнения основных математических операций, набор функций преобразований типов и работы со строками, классы, подобые TList и TStringList. При работе с классами поддерживаются свойства, наследование, полиморфизм. Очень многие возможности продемонстрированы в демо-проекте, имеется довольно подробный файл помощи, содержащий описание основных модулей и типов.
Резюме: довольно мощный инструмент для приложений, в которых необходимо выполнять программирование "на лету". По всей видимости, вполне способен устранить необходимость использования в своих приложениях MS Script Control для подобных действий. Проект постоянно развивается, периодически выходят обновления с исправлениями обнаруженных ошибок, а также с добавлениями новых возможностей. При беглом обзоре возможностей продукта явных недостатков обнаружено не было, если не считать мелких недочётов в демо-скриптах (в некоторых пропущены строки, из-за чего скрипт не работал, а выдавал сообщение об ошибке, но эти недочёты в принципе очевидны, поэтому без труда устраняются).
Николай Васильев
Основная страница | Свитки | Сокровищница | Подземелье Магов | Hello, World! | Арсенальная башня |
Содержание раздела