这是我想要做的。我有一个项目必须在某些版本的Delphi或更高版本中编译。我想使用条件编译器指令来测试Delphi版本,然后使用自定义消息生成自定义编译器错误。如果无法发生错误,能够生成自定义编译器警告或提示也是适当的。
当然,我可以在条件代码段中放入一些不可编辑的giberish,这很好。但我的问题是“我可以有条件地生成自定义编译器错误吗?”
谢谢Johan和Serg。
以下是解决方案,以及有关该问题的更多详细信息。我有一个最初在Delphi 2007中构建的应用程序。它包括连接到Web服务的Internet Direct组件。这些使用SSL。我最近将我的SSL库升级到更高版本,而这些版本与Delphi 2007 Indy组件的搭配并不是很好。我现在添加了以下编译器指令,以确保不再使用Delphi 2007或更早版本编译此应用程序:
{$IF CompilerVersion <= 19.0} // Delphi 2007 = 19.0
{$MESSAGE Error 'This project must be compiled in Delphi 2009 or later'}
{$IFEND}
答案 0 :(得分:43)
您可以使用:
{$Message HINT|WARN|ERROR|FATAL 'text string' }
{$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
这适用于Delphi 6及更高版本。
答案 1 :(得分:6)
由于在Delphi 6中引入了CONDITIONALEXPRESSIONS指令,因此检查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.