今天遇到一个奇怪的问题,在编译项目时报program or unit 'variants' recursively uses itself,意思是递归调用Variants单元。转到Variants单元后查看,发现uses语句中没有递归调用,而其出错位置也始终在procedure VarCopyByRef(var Dest: TVarData; const Source: TVarData)过程中。即使在新创建一个工程,什么都不填写,编译报错。试着在新项目中uses里不包含variants单元,但没有效果。因此感觉不是单元文件出错,可能是路径配置问题。
到tools的Library中查看,发现多了一行Borland/Delphi7/Source/Rtl/Sys,而variants单元确实在该路径下。但以前正常使用时不包含该路径的,有可能是路径指示重复,把该路径删除后,编译正常。