コンパイル済みの RemObjects Pascal スクリプトを実行時に Delphi にロードしようとしています。ただし、Delphi をロードしようとすると、「VALUE_TEAMCODE をインポートできません」という例外が表示されます。 Value_TeamCode
Pascal Script に登録済みの Delphi アプリの関数です。
これが私がやっていることです。以下の大まかな擬似コード - 実際のコードは複数のファイルに分割されています。また、SetCompiled
以下の呼び出しは、スクリプトの実行が必要になったときにアプリ内でかなり後で発生します。
コードに関する注意:
FPascalScript
はTPSScriptDebugger
...
//Register custom functions with Pascal Script
FuncsRegister;
//Load script
FPascalScript.Script.AddStrings(AContent);
//Compile script
FPascalScript.Compile;
//Get compiled script
FPascalScript.GetCompiled(sCompiledScript)
//Try and set script back in - ERROR Here 'Cannot Import VALUE_TEAMCODE'
FPascalScript.PascalScript.Debugger.SetCompiled(sCompiledScript);
...
多分私はこれについて間違っています。事前にコンパイルされたスクリプトをロードすることさえ可能かどうかはわかりません。
RemObjects WebSite Wiki で検索しましたが、Pascal Script のヘルプが削除されています。ここで StackOverflow のさまざまなトピックも検索しましたが、この問題に関連しているようには見えません。
もう一つメモ。実行時に問題なくコンパイルおよび実行するスクリプトが既にあります。パフォーマンス上の理由から、事前にコンパイルする必要があります。
どんな助けでも感謝します。
アップデート:
現在の回避策は、システム内のスクリプトごとに 1 つのスクリプト エンジンを使用することです。これらのエンジンは、プリコンパイル後もメモリに残ります。これにより、スクリプトのコンパイルごとに 30 ミリ秒のオーバーヘッドがなくなります。また、メモリを少し多く使用しますが、心配するほどではありません。
ただし、1 つのスクリプト エンジンだけを使用することをお勧めします (したがって、事前にコンパイルされたスクリプトを読み込む必要があります)。