Guest User

Untitled

a guest
Jan 14th, 2018
90
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.41 KB | None | 0 0
  1. // example usage...
  2. procedure TDataModuleMain.DataModuleCreate(Sender: TObject);
  3. begin
  4. try
  5. FRuntime := TChakraCoreRuntime.Create([ccroEnableExperimentalFeatures, ccroDispatchSetExceptionsToDebugger]);
  6. FContext := TChakraCoreContext.Create(FRuntime);
  7. FContext.Activate;
  8. ChakraCoreCheck(JsCreateObject(FConsole));
  9. ChakraCoreCheck(JsAddRef(FConsole, nil));
  10. SetCallback(FConsole, 'assert', ConsoleAssertFunc, Self);
  11. SetCallback(FConsole, 'log', ConsoleLogFunc, Self);
  12. SetCallback(FConsole, 'info', ConsoleInfoFunc, Self);
  13. SetCallback(FConsole, 'warn', ConsoleWarnFunc, Self);
  14. SetCallback(FConsole, 'error', ConsoleErrorFunc, Self);
  15. SetCallback(FConsole, 'exception', ConsoleErrorFunc, Self);
  16. SetProperty(FContext.Global, 'console', FConsole);
  17. except
  18. FConsole := nil;
  19. FreeAndNil(FContext);
  20. FreeAndNil(FRuntime);
  21. raise;
  22. end;
  23. end;
  24.  
  25. procedure TDataModuleMain.DataModuleDestroy(Sender: TObject);
  26. begin
  27. if Assigned(FConsole) then
  28. ChakraCoreCheck(JsRelease(FConsole, nil));
  29. FConsole := nil;
  30. FreeAndNil(FContext);
  31. FreeAndNil(FRuntime);
  32. end;
  33.  
  34. procedure TDataModuleMain.Execute(const ScriptFileNames: array of UnicodeString);
  35. var
  36. I, Cookie: Integer;
  37. begin
  38. Cookie := 0;
  39. for I := Low(ScriptFileNames) to High(ScriptFileNames) do
  40. begin
  41. RunScript(LoadFile(ScriptFilenames[I]), UnicodeString(ExtractFileName(ScriptFileNames[I])), Cookie);
  42. Inc(Cookie);
  43. end;
  44. end;
Add Comment
Please, Sign In to add comment