我在Delphi 7项目中有以下代码(IP地址已更改)。
const
{$IFNDEF DEBUG}
AUTHENTICATOR_DB_ADMIN_HOST = '123.456.789.12';
{$ELSE}
AUTHENTICATOR_DB_ADMIN_HOST = '127.0.0.1';
{$ENDIF}
在项目选项下:
在上面的代码示例中," DEBUG"未定义符号,因此IP地址设置为123.456.789.12
而不是127.0.0.1
。 我做错了什么?
此问题紧随Does Delphi's conditional compilation allow the defined symbols to contain values?
答案 0 :(得分:9)
如果您编译项目并且没有更改,并且DCU在最后一次非调试版本的路径上可用,那么将使用它,从而导致此问题。还要确保此单元包含在DPR的使用条款中。
如果您构建项目,它将强制重新编译添加到项目中的所有单元。
我通常编译语法,但总是为测试/部署而构建。
答案 1 :(得分:0)
我知道老问题,但这是我的答案。在Delphi 2010(无疑是其他版本)中,DEBUG条件是由配置管理器设置的,它实际上是保留字。
考虑这个简单的例子:-
program Buggy;
{$APPTYPE CONSOLE}
uses
SysUtils;
begin
{$IFDEF DEBUG}
WriteLn('DEBUG condition is ON.');
{$ELSE}
WriteLn('DEBUG condition is OFF.');
{$ENDIF}
{$IFDEF RELEASE}
WriteLn('RELEASE condition is ON.');
{$ELSE}
WriteLn('RELEASE condition is OFF.');
{$ENDIF}
ReadLn;
end.
您可以通过更改编译器配置来更改这些条件的设置:-
简而言之,请勿自己使用DEBUG或RELEASE-为测试创建一个唯一的指令。
尽管有其他注释,但我使用的条件有助于解决语法错误,较小的exe并防止对我不想发布的代码进行反向工程。
答案 2 :(得分:-2)
用“ $ IFNDEF”代替“ IFDEF”(否定形式用Ndef代替def)。