我已将PascalScript引擎包含到我的软件中。我的用户现在想为这个引擎编写一整套脚本,并希望知道是否可以通过include
或uses
命令包含其他脚本。PascalScript包括其他脚本的每个用途或包含命令
他想要做的是写一个脚本,其中包含各种常量/变量和另一个执行逻辑的脚本。最后他希望将常量包含在他的逻辑脚本中。
我希望这是明确的足够理解。
我已将PascalScript引擎包含到我的软件中。我的用户现在想为这个引擎编写一整套脚本,并希望知道是否可以通过include
或uses
命令包含其他脚本。PascalScript包括其他脚本的每个用途或包含命令
他想要做的是写一个脚本,其中包含各种常量/变量和另一个执行逻辑的脚本。最后他希望将常量包含在他的逻辑脚本中。
我希望这是明确的足够理解。
我发现了,继承人该怎么做: PascalScript编译器的UsePreprocessor属性需要设置为true。如果是这样,你现在可以使用下面的命令预处理:
{$ I FILENAME.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;
(请修正你的问题的标题)
我不能完全肯定,但据我所知Pascalscript没有“文件”的概念。在将它们传递给解释器之前,您可以简单地将两个部分连接起来,或者让一个小预处理器查找{$ I}包含语句并查看要插入的代码。
JVCL JvInterpreter允许您使用其他单位,并且可以从文件中读取它们,如果它更符合您的需要,可以尝试使用它。 – 2011-05-26 14:28:39
谢谢你的提示沃伦。我发现pascal脚本的解决方案见下文 – 2011-05-26 15:13:55