Delphi 中TPath单元引用报错无法编译问题

【问题点描述】
大家都知道在FMX中,IO相关的都整合到System.IoUtils单元内,对应的文件路径也都在这个单元内,在跨平台的代码中,我们会经常使用到。出现这样的情况:已经引用了system.IOUtils单元,为什么还是会提示错误?
在这里插入图片描述
【模拟重现】
新建一个空FMX项目,增加两个单元 system.IOUtils与 FMX.Objects的引用,随意在某个事件中写一行代码:Tpath.combine,会如下图:
在这里插入图片描述
我们进行一下调整,把两个单元文件的引用改变一下顺序,结果如下图:
在这里插入图片描述

神奇的一幕出现了,是不是不再提示错误。

【追源求解】
现在,我们来看看system.IOUtils与 FMX.Objects两个文件为什么会出现这样的情况。
首选是分别打开两个源码文件,我们可以看到,在FMX.Objects里定义了一个以TPath命名的类,在system.IOUtils里有一个以TPath命名的记录。
在这里插入图片描述
FMX.Objects文件里的TPath.
在这里插入图片描述
system.IOUtils里的TPath.

所以,当FMX.Objects引用在后面时,系统认可的是TPath类,这个类是没有Combine函数的,自然会提示有错误。
到这里,相信大家也知道了解决办法(之一),调整单元引用的顺序,即可解决当前问题。
可是,现在新的问题出现了,如果我们同时又需要使用TPath类里的Data属性(TPathData类型的数据),就会出现下图情况(我代码有省略没写全的哈,只为展现出现的情况):

在这里插入图片描述

Tpath.Data提示错误了。回头再更换一下两个引用单元的顺序,会变为Tpath.Data可用,Tpath.combine不可用。
所以需要引出第二种解决方式:在Tpath.combine前增加单元名:system.IOUtils。
在这里插入图片描述
很多时候,我们多留意一下,会发现在Delphi的一些源码中,就使用的这种方式。
我个人也推荐这种方式,有时候多写几个字,会有好处的。

  • 2
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值