Codegear C++ Builder 2007 и Addmethod

отредактировано 22:38 Раздел: FastScript
Прошу помощи зала!

Как добавить внешний метод в скрипт под CodeGear C++ Builder 2007?

Пишу:

TfsScript *fs;
TfsJScript *js;

fs=new TfsScript(f);
js=new TfsJScript(f);
fs->Parent=fsGlobalUnit();
fs->Clear();
fs->SyntaxType="JScript";
fs->Lines->Text="bc_Test();";
fs->AddMethod("procedure bc_Test()",CallMethod);

if (fs->Compile())
fs->Execute();
else
bc_Alert("FS compile error");

Variant __fastcall CallMethod(TObject *Object,TMetaClass *MetaClass,const AnsiString Name,Variant &Var)
{
if (Name=="bc_Test")
bc_Alert(VarToStr(Var.GetElement(0)).c_str());

return NULL;
}

Получаю:

E2285 Could not find a match for 'TfsScript::AddMethod(const char *,Variant (_fastcall *)(TObject *,TMetaClass *,const AnsiString,Variant &))'

Ставил FS10/FS11 (FS12 под CGR C++ 2007 не ставится), форум облазил - ничего не помогает, вылетает одна и та же ошибка!

Комментарии

  • отредактировано 22:38
    2 Админ:

    Господа, Вы деньги собираетесь зарабатывать?

    Пока означенная выше проблема не решена, я не могу купить ваш FastScript!
  • отредактировано 22:38
    malinov написал: »
    2 Админ:

    Господа, Вы деньги собираетесь зарабатывать?

    Пока означенная выше проблема не решена, я не могу купить ваш FastScript!
    Нужно передавать не как CallMethod, а как указатель &CallMethod.

    Пример:
    extern "C"
    void __stdcall __LateVCLInit(void)
    {
      fsRTTIModules()->Add(__classid(TFsFunctions2));
    }
    
    void InitPack()
    {
    
    }
    
    __fastcall TFsFunctions2::TFsFunctions2(TfsScript * pAScript) : TfsRTTIModule(pAScript)
    {
        pAScript->AddMethod("function MyFunc2(s:String; i:Integer):Boolean", &CallMethod, "ctOther", "The MyFunc function always returns True");
    
    
    }
    
    
    Variant __fastcall TFsFunctions2::CallMethod(System::TObject* Instance, TMetaClass* ClassType, const AnsiString MethodName, Variant &Params)
    {
        if(MethodName=="MYFUNC2")
            return FsMyFunc(Params.GetElement(0), Params.GetElement(1));
    
        return "";
    }
    
    
    bool TFsFunctions2::FsMyFunc(AnsiString s, int i)
    {
        return true;
    }
    


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

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