6

我使用将我的应用程序的源代码组织到 Pascal 编译单元中File -> New Unit

以下单元编译OK ...

unit CryptoUnit;

{$mode objfpc}{$H+}

interface
  function Encrypt(key, plaintext:string):string;
  function Decrypt(key, ciphertext:string):string;

implementation

uses
  Classes, SysUtils, Blowfish;

function Encrypt(key, plaintext:string):string; 
...

然而,这个有编译错误,因为它无法在第 6 行识别“异常”......

unit ExceptionUnit;

{$mode objfpc}{$H+}

interface
  procedure DumpExceptionCallStack(E: Exception);  // <--- problem

implementation

uses
  Classes, SysUtils, FileUtil;


{ See http://wiki.freepascal.org/Logging_exceptions }

procedure DumpExceptionCallStack(E: Exception);      
...

如果我假设它Exception是定义在SysUtils(我怎么知道?)我不能放在uses SysUtils前面interface(编译器抱怨它期待interface

我如何告诉编译器中Exception定义的SysUtils

4

1 回答 1

6

您的单元使用的其他单元将在 interface 关键字之后引用,但在 interface 部分中的其他语句之前引用。

您的示例应采用以下形式:

unit ExceptionUnit;

{$mode objfpc}{$H+}

interface

uses
  Classes, SysUtils, FileUtil;

procedure DumpExceptionCallStack(E: Exception);

implementation

{ See http://wiki.freepascal.org/Logging_exceptions }

procedure DumpExceptionCallStack(E: Exception); 
于 2013-08-23T20:39:40.650 回答