以前的工作代码不起作用

时间:2014-12-30 14:45:29

标签: delphi delphi-xe2 delphi-7 delphi-xe

下面有代码,并且在

之前运作良好
unit Unit1;
  {$DEFINE _Full}
 // {$DEFINE _Trial}

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;


{$ifdef  _Trial}

_programname='abc';


{$endif}

{$ifdef  _Full}

_programname='abc';


{$endif}

但今天我运行Delphi并尝试编译,它报告了

Identifier redeclared: '_programname'

看起来像

  {$DEFINE _Full}

不起作用

欢迎评论

2 个答案:

答案 0 :(得分:4)

两个条件都已定义。这可以从编译器错误中推断出来。

单行//注释不会注释掉定义。或者您在项目级别定义_Trial。据我所知,单行//注释将注释掉指令。所以我假设_Trial是在项目级别定义的。

注释掉定义的惯用方法是这样的:

{.$DEFINE _Trial}

对于任何一种或条件,单个条件可能更简单:

{$IFDEF _Trial}
  .... stuff for trial version
{$ELSE}
  .... stuff for full version
{$END}

所有这些,也许您的实际问题是不同的,因为您显示的代码与您报告的错误消息不匹配。我希望有一个错误,说明了关键字,但找到了标识符_programname。在声明const之前,问题中的代码似乎省略了_programname关键字。

答案 1 :(得分:0)

我在假设_programname应该是一个常量的情况下提交这个,因为这与t一致 你正在展示的代码。您的常量声明需要在CONST节块中声明。试试这个:

unit Unit1;
  {$DEFINE _Full}
 // {$DEFINE _Trial}

interface

uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms;

CONST  //<< Changed Code

{$ifdef  _Trial}

_programname='abc';

{$endif}

{$ifdef  _Full}

_programname='abc';


{$endif}