sciter 1 и Delphi
От: alex1nax  
Дата: 02.03.14 17:58
Оценка:
Пытаюсь написать обертку sciter-x.dll для Delphi.
Сейчас столкнулся с проблемой регистрации native классов.

Создаю компонент. В конструкторе получаю Handle окна.

Затем вызываю
FSciterVM := SciterGetVM(Handle);

Затем цепляю callback и EventHandler.

И здесь же, в конструкторе вызываю метод Init, который выглядит следующим образом

procedure TSciterX.Init;
var
  ma: array[0..1] of tiscript_method_def;
  cd: tiscript_class_def;
begin

  ma[0].name:=pansichar('test');
  ma[0].handler:=@TestNativeMethod;
  ma[1].name:=pansichar('this');
  ma[1].handler:=@thisNativeMethod;

  cd.name:=classini;
  cd.methods:=@ma;
  cd.props:=0;
  cd.consts:=0;
  cd.prototype:=0;
  cd.finalizer:=finalize;
  cd.get_item:=nil;
  cd.set_item:=nil;
  cd.iterator:=nil;
  cd.on_gc_copy:=gc_copy;

  ni.define_class(FSciterVM, @cd, 0);

end;


Если в методе Init вызвать метод native интерфейса eval

script:='var i = new ini(); i.test();';
ni.eval_string(FSciterVM,ni.get_current_ns(FSciterVM),pchar(script),length(script),@v)


функции TestNativeMethod и thisNativeMethod чудесно вызываются.

Проблема состоит в следующем: если после проделанных манипуляций я загружаю в sciter документ, то получаю

Project SciterTest.exe raised exception class $C0000005 with message 'access violation at 0x10001dcd: read of address 0x00000008'.

Без регистрации класса документ, естественно, загружается без ошибок.
В чем может быть проблема?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.