编译时如何检测Alexandria 11.3及以上版本?
编译时区分Delphi Alexandria 11.2与11.3的方法
由于11.2和11.3的CompilerVersion与RTLVersion均为35,无法通过这两个常量直接区分,以下是两种可靠的编译时检测方案:
方案1:使用官方预定义的条件编译符号
Embarcadero在每个小版本中都会添加对应的版本专属编译符号,直接通过这些符号判断是最简洁可靠的方式:
// 检测是否为11.3及以上版本 {$IFDEF DELPHI_11_3} // 此处编写11.3及以上版本的专属代码 ShowMessage('当前环境为Delphi Alexandria 11.3+'); {$ELSEIF DEFINE DELPHI_11_2} // 此处编写11.2版本的专属代码 ShowMessage('当前环境为Delphi Alexandria 11.2'); {$ELSE} // 其他版本处理逻辑 {$ENDIF}
DELPHI_11_2是11.2版本的专属符号DELPHI_11_3是11.3及后续同大版本更新(如11.4)的专属符号
方案2:通过RTL构建号区分
如果需要更细粒度的版本判断,可以使用RTLVersionBuild常量(对应版本的构建编号),11.2与11.3的构建号存在明显差异:
{$IF RTLVersion = 35} // 先锁定Alexandria大版本 {$IF RTLVersionBuild >= 46300} // 11.3及以上版本(11.3的构建号起始为46300) ShowMessage('当前环境为Delphi Alexandria 11.3+'); {$ELSE} // 11.2版本(构建号为43500) ShowMessage('当前环境为Delphi Alexandria 11.2'); {$ENDIF} {$ENDIF}
- Delphi Alexandria 11.2的
RTLVersionBuild为43500 - Delphi Alexandria 11.3的
RTLVersionBuild为46300
两种方案中,方案1更推荐,因为它是官方明确提供的版本标识,不会因构建号的细微调整出现判断误差。
内容的提问来源于stack exchange,提问作者HeartWare
相关产品推荐
相关产品推荐

