Почему я не могу зарегистрировать этот метод с помощью компилятора PascalScript? - PullRequest
0 голосов
/ 09 февраля 2010

Мой вопрос ниже.

Вот мои настройки:

interface 

  uses windows, {...,} uPSComponent_Default, uPSComponent, uPSRuntime, uPSComponent_Controls;

  TForm1 = class(TForm)
    //...
    PSScript1: TPSScript;
    PSImport_Classes1: TPSImport_Classes;
    PSImport_Controls1: TPSImport_Controls;
    procedure PSScript1Compile(Sender: TPSScript);
    //...
  Private
    procedure NewItem(const Caption:string; const SubItems:TStringList);
    //...
  end;

implementation

  {...}

  procedure TForm1.PSScript1Compile(Sender: TPSScript);
  begin
    //...
    Sender.AddMethod(Self, @TForm1.NewItem,  'procedure NewItem(const Caption:string; const SubItems:TStringList);');
    //...
  end;

Почему я получаю следующую ошибку при попытке скомпилировать любой скрипт.

[Error] (1:1): Unable to register function procedure NewItem(const Caption:string; const SubItems:TStringList);

Я знаю, что это связано с моей попыткой импортировать метод NewItem в компилятор PS, но я не знаю, почему он не примет TStringList. Я знаю, что это TStringList, потому что если я возьму параметр TStringList и просто использую метод со следующей сигнатурой, то все будет работать.

    procedure NewItem(const Caption:string);

Я не могу найти никаких ссылок, говорящих о том, что я не могу передавать объекты назад и вперед между компилятором / скриптом и моим кодом Delphi, но я начинаю думать, что, возможно, существует ограничение в выполнении именно этого типа вещей.

Имеет ли смысл пытаться передать массив строк вместо TStringList?

1 Ответ

2 голосов
/ 09 февраля 2010

Если бы я догадался, я бы сказал, что это возможно потому, что вы еще не зарегистрировали класс TStringList. Классы должны быть зарегистрированы в PascalScript, прежде чем он сможет их использовать.

...