Delphi 避坑 : 当UnitName变量遇到With

e43aa42a323ac83163f8bdc2cd80c8f2


如果我不把UnitName 改成UnitName1,在With内部会得到一个意料之外的值.

分析: with内部的UnitName 其实指向的是system单元下的TObject.UnitName,然后在当前语境下,指向的就是fq.UnitName,而不是你在上面声明的UnitName.所以它才会返回'FireDAC.Comp.Client'

关于这一点,你可以通过ctrl+点击变量名观察得到.

image

 

总结:

1.尽量少用或者不用with.

2.当你得到一个认知以外的值时,请优先排除with

 

posted @ 2026-02-03 23:33  一曲轻扬  阅读(3)  评论(0)    收藏  举报