ROPS (Rem Object Pascal Script) - встраиваемый интерпретатор языка Pascal. Плагины PSImport_DateUtils, PSImport_ComObj, PSDllPlugin, PSCustomPlugin


    PSImport_DateUtils — плагин библиотеки импорта для модулей Delphi SysUtils.pas (EncodeDate, EncodeTime, TryEncodeDate, TryEncodeTime, DecodeDate, DecodeTime, DayOfWeek, Date, Time, Now, DateToStr, StrToDate, FormatDateTime) и DateUtils.pas (DateTimeToUnix, UnixToDateTime).

Плагин добавляет в среду интерпретатора следующие данные:

Типы (список TPSPascalCompiler.FTypes):
  • TDateTime = Double;

Процедуры и функции (список TPSPascalCompiler.FProcs):
  • function EncodeDate(Year: Word; Month: Word; Day: Word): TDateTime;
  • function EncodeTime(Hour: Word; Min: Word; Sec: Word; MSec: Word): TDateTime;
  • function TryEncodeDate(Year: Word; Month: Word; Day: Word; var Date: TDateTime): Boolean;
  • function TryEncodeTime(Hour: Word; Min: Word; Sec: Word; MSec: Word; var Time: TDateTime): Boolean;
  • procedure DecodeDate(DateTime: TDateTime; var Year: Word; var Month: Word; var Day: Word);
  • procedure DecodeTime(DateTime: TDateTime; var Hour: Word; var Min: Word; var Sec: Word; var MSec: Word);
  • function DayOfWeek(DateTime: TDateTime): Word;
  • function Date: TDateTime;
  • function Time: TDateTime;
  • function Now: TDateTime;
  • function DateTimeToUnix(D: TDateTime): Int64;
  • function UnixToDateTime(U: Int64): TDateTime;
  • function DateToStr(D: TDateTime): string;
  • function StrToDate(S: string): TDateTime;
  • function FormatDateTime(fmt: string; D: TDateTime): string;

    PSImport_ComObj — плагин библиотеки импорта для модуля Delphi ComObj.pas.

Плагин добавляет в среду интерпретатора следующие данные:

Типы (список TPSPascalCompiler.FTypes):
  • HResult = LongInt;
  • array of Byte = StaticArray[0..7];
  • TGUID = record
      D1: LongWord;
      D2: Word;
      D3: Word;
      D4: array of Byte;
    end;
  • TCLSID = TGUID;
  • TIID = TGUID;

Процедуры и функции (список TPSPascalCompiler.FProcs):
  • procedure OleCheck(Result: LongInt);
  • function StringToGUID(S: string): TGUID;
  • function CreateComObject(ClassID: TGUID): IUnknown;
  • function CreateOleObject(ClassName: string): IDispatch;
  • function GetActiveOleObject(ClassName: string): IDispatch;

    PSDllPlugin — плагин библиотеки импорта для использования в Pascal Script функций внешних Dll. Добавочных типов и констант не определяет.

Синтаксис вызова для вызова функции Dll:
  • function MessageBox(hWnd: Integer; lpText, lpCaption: AnsiString; uType: Cardinal): Integer; external '[email protected] stdcall delayload';
  До слова external идет описание функции: имя и состав параметров. Имена могут быть любыми допустимыми идентификаторами. После слова external в кавычках указывается название функции в файле DLL. После символа @ идет имя самого файла dll. Stdcall – это соглашение о вызове функции. Слово delayload необязательное, оно позволяет загружать DLL не сразу при запуске программы, а при первом вызове функции.
  Файл DLL должен находиться в папке с программой или в системной папке «system32». Текст подключения может быть в любом модуле.

    PSCustomPlugin — плагин-пустышка для легкой разработки собственных плагинов, все процедуры интерфейса плагинов представлены в виде событий.

  После двойного клика на событии в инспекторе обьектов IDE в коде появятся заготовки функций интерфейса плагинов, которые надо заполнить кодом:

  • procedure TForm.PSCustomPluginCompileImport1(Sender: TPSScript);
    begin
    end;
  • procedure TForm.PSCustomPluginCompileImport2(Sender: TPSScript);
    begin
    end;
  • procedure TForm.PSCustomPluginCompOnUses(Sender: TPSScript);
    begin
    end;
  • procedure TForm.PSCustomPluginExecImport1(Sender: TPSScript);
    begin
    end;
  • procedure TForm.PSCustomPluginExecImport2(Sender: TPSScript);
    begin
    end;
  • procedure TForm.PSCustomPluginExecOnUses(Sender: TPSScript);
    begin
    end;

Зависимости

  Плагины самодостаточны, и для своей работы им достаточно только включения в список Plugins компонента PSScript.

  • +3
  • 07 октября 2022, 21:15
  • anakost

Комментарии (0)

RSS свернуть / развернуть
Только зарегистрированные и авторизованные пользователи могут оставлять комментарии.