我已经找到了这个答案 https://stackoverflow.com/a/14422904/988445关于如何在运行时检查 Indy 版本,有多种不同的方法。不过,我正在寻找如何使用条件在编译时检查 Indy 版本。新版本的 Indy 中有一项功能,我希望我的开源项目能够使用该功能(如果可用)。但我需要有条件地编译它。
我找到了IdVers.inc
,但此文件仅包含常量 - 没有版本条件。
更具体地说,TIdHTTP
有财产HTTPOptions
有一个新的选择hoWantProtocolErrorContent
。如果可以的话,我想使用它。
如果可用,我如何有条件地使用此选项?
我认为您可以使用以下方法获得您想要实现的结果
{$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}
[...]
以及我在评论中提到的文章,$如果声明 http://docwiki.embarcadero.com/RADStudio/Rio/en/IF_directive_(Delphi),
也有这个D2009在线帮助 http://docs.embarcadero.com/products/rad_studio/delphiAndcpp2009/HelpUpdate2/EN/html/devcommon/compdirsifdirective_xml.html.
$if declared
使用类的方法,例如
procedure TMyClass.DoSomething;
begin
{$if declared(TMyClass.Added)} // Added being a procedure of TMyClass
Added;
{$endif}
end;
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)