假设我将此功能保存在某个脚本中:
function Add(a,b:integer):integer;
begin
result:=a+b;
end;
我还有另一个脚本如下:
var
a,b,c:integer;
a:=1;
b:=2;
c:=Add(a,b);
println(inttoStr(c));
如何使用 Delphi 中的 dwscript 编译两个脚本并从第二个脚本调用第一个脚本?
答案 0 :(得分:4)
假设一个文件名为“file1.extension”,其内容为:
function Add(a,b:integer):integer;
begin
result:=a+b;
end;
和另一个名为“main.extension”的文件,内容为:
var
a,b,c:integer;
a:=1;
b:=2;
c:=Add(a,b);
println(inttoStr(c));
您需要在“main.extension”文件的开头添加以下行:
// note that file name is case sensitive
// file1.extension <> FILE1.EXTENSION
// include_once is to solve cycle-includes
// i.e. file1.extension includes main.extension and vice-versa
{$include_once 'file1.extension'}
// or include if file1.extension does not require functions/objects/variables/etc.
// from main.extension
{$include 'file1.extension'}
我建议使用{$ include_once ...}而不是{$ include ...}。
答案 1 :(得分:3)
除了使用Dorin的答案中列出的$ include / $ include_once之外,如果您使用的是SVN(2.3)版本,还可以使用带有“uses”语句的更多传统单元。
单位可以是带有接口/实现的“经典”单位,也可以是遵循扩展脚本语法的混合单位(只需省略“interface”关键字并开始声明/实现)。
将源传递给编译器的最简单方法是使用事件(OnInclude for includes source,OnNeedUnit for units source),但您也可以通过指定CompileFileSystem来传递它们。