Проблема при объявлении конструктора класса

отредактировано 14:25 Раздел: FastScript
В приложении есть форма, у которой переопределен конструктор
  TfmAnyEditForm = class(TForm)
   ...
    constructor Create(AOwner:TComponent; cds:TClientDataSet);reintroduce;overload;
  end;

В Delphi делаю следующим образом
function CallMethodAnyEdit(Instance: TObject; ClassType: TClass; const MethodName: String;
  Caller: TfsMethodHelper): Variant;
begin
  if MethodName = AnsiUpperCase('Create') then
    TfmAnyEditForm(Instance).Create(TComponent(Integer(Caller.Params[0])), TClientDataSet(Integer(Caller.Params[1])));
end;

...
  fsScript1.Parent := fsGlobalUnit;
  fsScript1.SyntaxType := 'PascalScript';
  fsScript1.Clear;
  fsScript1.Lines.Clear;
  fsScript1.Lines :=  fsSyntaxMemo1.Lines;
...
  with fsScript1.AddClass(TfmAnyEditForm, 'TForm') do begin
    AddMethod('constructor Create(AOwner:TComponent; cds:TClientDataSet)', CallMethodAnyEdit);
  end;
...

При вызове fsScript1.Compile возникает ошибка
несовместимые типы: 'Class TfmAnyEditForm', 'Class '

Эту ошибку никак не удается победить. Форум весь прочитал и обратил внимание, что у многих возникает подобного рода ошибка. Но рецепта, как ее победить - нет нигде.

Надеюсь на ваш ответ.

Комментарии

  • VIRVIR
    отредактировано 14:25
    Навскидку ошибка в TfmAnyEditForm(Instance).Create(TComponent(Integer(Caller.Params[0])), TClientDataSet(Integer(Caller.Params[1])));

    Instance - не создан, а вы к нему уже обращаетесь. Instance := TfmAnyEditForm.Create(...)
    да и вообще переопределение конструктора с reintroduce - плохой тон. Лучше делайте присвоение Cds после.

Оставить комментарий

Многофункциональный текстовый редактор. Чтобы отредактировать стиль параграфа, нажмите TAB, чтобы перейти к меню абзаца. Там вы можете выбрать стиль. По умолчанию не выбран ни один стиль. Когда вы выберете текст, появится встроенное меню форматирования. Нажмите TAB, чтобы войти в него. Некоторые элементы, такие как многофункциональные вставки ссылок, картинок, индикаторов загрузки и сообщений об ошибок могут быть вставлены в редактор. Вы можете перемещаться по ним, используя стрелки внутри редактора и удалять с помощью клавиш delete или backspace.