Products Shop Support Company |
Pascal Script

Pascal Script for Delphi

Pascal Script is a free scripting engine that allows you to use most of the Object Pascal language within your Delphi or Free Pascal projects at runtime. Written completely in Delphi, it is composed of a set of units that can be compiled into your executable, eliminating the need to distribute any external files. Pascal Script started out as a need for a good working script, when there were none available at the time.

Why use a scripting engine?

A scripting engine allows an end user to customize an application to his or her needs without having to recompile it. In addition, you can update your applications by just sending a new script file that could even be compiled to byte code, which cannot easily be transformed back to source code.

Pascal Script includes the following features:

  • Variables, Constants
  • Standard language constructs:
    • Begin/End
    • If/Then/Else
    • For/To/Downto/Do
    • Case x Of
    • Repeat/Until
    • While
    • Uses
    • Exit
    • Continue
    • Break
  • Functions inside the script
  • Calling any external DLL function (no special function headers required)
  • Calling registered external methods
  • All common types like Byte, Shortint, Char, Word, SmallInt, Cardinal, Longint, Integer, String, Real, Double, Single, Extended, Boolean, Array, Record, Enumerations, Variants
  • Allows the importing and use of classes, with events, properties, methods and constructors
  • Allows the importing and use of interfaces and their members
  • Allows IDispatch dynamic method invocation through Variant
  • Assignment of script functions to Delphi events
  • Uses byte code as an intermediate format and allows the storing and reloading of compiled scripts
  • Easy to use component version
  • Support for include files
  • Support for compiler defines
  • Capability to call RemObjects SDK Services from within scripts
  • Includes a tool to create headers for importing classes and interfaces


Pascal Script started out in 2001 with CajScript 1.0, which was soon superseded by CajScript 2.0 (later called Innerfuse Pascal Script 2.0). Version 2.0 interpreted scripts while it ran them, which had the disadvantage that every piece of code had to be reparsed every time the script engine went over it. With Pascal Script 3.0, this was changed to a new model, where the compiler and runtime were completely separated from each other and used a custom byte code format to represent the compiled script. This compiled script only contained the bare minimum that was required to execute the code. Later, when Carlo Kok joined RemObjects, it was renamed RemObjects Pascal Script and is now being maintained by RemObjects Software.

One prominent use of Pascal Script is the Open Source InnoSetup project. InnoSetup is a widely used setup engine that uses Pascal Script as scripting engine to provide advanced scripting abilities during installation and uninstallation. Using Pascal Script, users can customize almost all parts of the setup, add new wizard pages, call into dlls to add advanced features and provide custom behavior and install conditions.

Pascal Script is also leveraged extensively by our own Data Abstract for Delphi to provide business rules scripting.

Get the latest source and downloads for Pascal Script or participate in the development process and contribute code to the project on github.

Visit for more information.