4

假设我将此函数保存在某个脚本中:

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编译两个脚本并从第二个脚本调用第一个脚本?

4

2 回答 2

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 ...}。

于 2012-03-06T07:33:52.697 回答
3

除了使用 Dorin 的答案中列出的 $include / $include_once 之外,如果您使用的是 SVN (2.3) 版本,还可以使用带有“uses”语句的更传统的单位。

单元可以是具有接口/实现的“经典”单元,也可以是遵循扩展脚本语法的混合单元(只需省略“接口”关键字并开始声明/实现)。

将源传递给编译器的最简单方法是使用事件(OnInclude 用于包含源,OnNeedUnit 用于单元源),但您也可以通过指定 CompileFileSystem 来传递它们。

于 2012-03-06T07:43:48.733 回答