我已将 PascalScript 引擎包含在我的软件中。我的用户现在想为这个引擎编写一整套脚本,并且想知道是否可以通过include
或命令包含其他脚本uses
。
他想做的是编写一个包含各种常量/变量的脚本和另一个执行逻辑的脚本。最后,他想将常量包含在他的逻辑脚本中。
我希望这足够清楚,可以理解。
我已将 PascalScript 引擎包含在我的软件中。我的用户现在想为这个引擎编写一整套脚本,并且想知道是否可以通过include
或命令包含其他脚本uses
。
他想做的是编写一个包含各种常量/变量的脚本和另一个执行逻辑的脚本。最后,他想将常量包含在他的逻辑脚本中。
我希望这足够清楚,可以理解。
我发现,这是如何做到的:PascalScript 编译器的 UsePreprocessor 属性需要设置为 true。如果是这样,您现在可以使用以下预处理器命令:
{$I 文件名.txt}
您还需要使用我在网上找到的以下示例来实现编译器的 OnNeedFile 事件:
function TForm1.ceNeedFile(Sender: TObject; const OrginFileName: String;
var FileName, Output: String): Boolean;
var
path: string;
f: TFileStream;
begin
Path := ExtractFilePath(ParamStr(0)) + FileName;
try
F := TFileStream.Create(Path, fmOpenRead or fmShareDenyWrite);
except
Result := false;
exit;
end;
try
SetLength(Output, f.Size);
f.Read(Output[1], Length(Output));
finally
f.Free;
end;
Result := True;
end;
(请修正您的问题标题)
我不完全确定,但 afaik Pascalscript 没有“文件”概念。您可以在将它们传递给解释器之前简单地连接这两个部分,或者让一个小型预处理器查找 {$I } 包含语句并查找要插入的代码。
如果您将条件定义设置为PS_USESSUPPORT
并且在OnFindUnknownFile
事件中您必须将 pas 文件内容加载到输出字符串中。
然后您可以使用“使用 XYZ;”。