Delphi 我可以生成自定义编译器错误吗?如果是,怎么做?

Delphi 我可以生成自定义编译器错误吗?如果是,怎么做?,delphi,Delphi,这是我想做的。我有一个项目,必须在一些版本的Delphi或更高版本编译。我想使用一个条件编译器指令来测试Delphi版本,然后用一条自定义消息生成一个自定义编译器错误。如果不可能出现错误,那么能够生成自定义编译器警告或提示也很难 当然,我可以在条件代码段中放入一些不可编译的giberish,这很好。但我的问题是“我能有条件地生成自定义编译器错误吗?” 谢谢约翰和塞格 以下是解决方案,以及有关此问题的更多详细信息。我有一个最初在Delphi2007中构建的应用程序。它包括连接到Web服务的Int

这是我想做的。我有一个项目,必须在一些版本的Delphi或更高版本编译。我想使用一个条件编译器指令来测试Delphi版本,然后用一条自定义消息生成一个自定义编译器错误。如果不可能出现错误,那么能够生成自定义编译器警告或提示也很难

当然,我可以在条件代码段中放入一些不可编译的giberish,这很好。但我的问题是“我能有条件地生成自定义编译器错误吗?”


谢谢约翰和塞格

以下是解决方案,以及有关此问题的更多详细信息。我有一个最初在Delphi2007中构建的应用程序。它包括连接到Web服务的Internet Direct组件。它们使用SSL。我最近将我的SSL库升级到了一个更高的版本,而这些库在Delphi2007 Indy组件中表现得不太好。我现在添加了以下编译器指令,以确保不再使用Delphi 2007或更早版本编译此应用程序:

{$IF CompilerVersion <= 19.0} // Delphi 2007 = 19.0
   {$MESSAGE Error 'This project must be compiled in Delphi 2009 or later'}
{$IFEND}
{$IF compilervision您可以使用:

{$Message HINT|WARN|ERROR|FATAL 'text string' } 
见:


这适用于Delphi 6及更高版本。

自从在Delphi 6中引入ConditionalPressions指令以来,检查Delphi版本变得很容易:

program requires2010;

{$APPTYPE CONSOLE}

{$IFDEF CONDITIONALEXPRESSIONS}
   {$IF CompilerVersion >= 21.0} // 21.0 is Delphi 2010
     {$DEFINE DELPHI2010}
   {$IFEND}
{$ENDIF}

begin
{$IFNDEF DELPHI2010}
  {$MESSAGE Fatal 'Wrong Delphi Version'}
{$ENDIF}
  Writeln('Continued');
  Readln;
end.

这是在哪个版本中引入的?@Johan:我确定它是在Delphi 2007之前引入的。目前我没有遗留的Delphi版本可供检查。您可以对照IFDEF VER140(Delphi6)进行检查和defs一样,VER22=Delphi XE。我认为conditionalexpressions是在Linux平台上的Kylix和Windows平台上的Delphi 6中引入的。是的:谢谢大家的回答!确实如此。当然,您可以将它们放在
{$IFDEF}之间
像Cary这样的语句想对所需的编译器版本发出警告。这并不是说我不满意上面的投票,而是这个答案有什么了不起的?每个人都会突然产生创建自定义编译器消息的冲动吗?我想这是因为它不是经常出现的东西,但可能真的很有用。另外,我还提到了一点b在发布这个问题之前,我没有立即看到任何东西。因此,这可能是一个鲜为人知的技术。我自己肯定不知道,我写过并使用过Delphi的每个版本。你值得投票,因为你实际上a)给出了所有五个例子,b)给了每个人一个适当的例子,c)明确地说出了我的想法这是一个值得投票的好答案。
{$MESSAGE 'Boo!'}                   emits a hint 
{$Message Hint 'Feed the cats'}     emits a hint 
{$messaGe Warn 'Looks like rain.'}  emits a warning 
{$Message Error 'Not implemented'}  emits an error, continues compiling 
{$Message Fatal 'Bang.  Yer dead.'} emits an error, terminates compiler 
program requires2010;

{$APPTYPE CONSOLE}

{$IFDEF CONDITIONALEXPRESSIONS}
   {$IF CompilerVersion >= 21.0} // 21.0 is Delphi 2010
     {$DEFINE DELPHI2010}
   {$IFEND}
{$ENDIF}

begin
{$IFNDEF DELPHI2010}
  {$MESSAGE Fatal 'Wrong Delphi Version'}
{$ENDIF}
  Writeln('Continued');
  Readln;
end.