我已经找到this answer关于如何在运行时检查Indy版本的信息,并且有多种不同的方式。但是,我正在寻找如何在编译时使用条件语句检查Indy版本。较新版本的Indy中有一个功能,我希望我的开源项目使用此功能(如果可用)。但是我需要有条件地编译它。
我找到了IdVers.inc
,但是此文件仅包含常量-没有版本条件。
更具体地说,TIdHTTP
具有属性HTTPOptions
,该属性具有新的选择hoWantProtocolErrorContent
。如果可以的话,我想使用它。
如果可用,如何有条件地使用此选项?
答案 0 :(得分:5)
我认为您可以使用
获得想要的结果{$if declared ...
构造。在rtl的SysInit.Pas中有一个用法示例:
function GetTlsSize: Integer;
{$IF defined(POSIX) and defined(CPUX86) and (not defined(EXTERNALLINKER))}
asm
// Use assembler code not to include PIC base gain
MOV EAX, offset TlsLast
end;
{$ELSE}
begin
Result := NativeInt(@TlsLast);
{$IF DECLARED(TlsStart)}
Result := Result - NativeInt(@TlsStart);
{$ENDIF}
[...]
以及我在评论中提到的文章$If Declared, D2009 online help中也有此内容。
$if declared
使用类方法,例如
procedure TMyClass.DoSomething;
begin
{$if declared(TMyClass.Added)} // Added being a procedure of TMyClass
Added;
{$endif}
end;