Delphi 避坑 : 当UnitName变量遇到With

如果我不把UnitName 改成UnitName1,在With内部会得到一个意料之外的值.
分析: with内部的UnitName 其实指向的是system单元下的TObject.UnitName,然后在当前语境下,指向的就是fq.UnitName,而不是你在上面声明的UnitName.所以它才会返回'FireDAC.Comp.Client'
关于这一点,你可以通过ctrl+点击变量名观察得到.

总结:
1.尽量少用或者不用with.
2.当你得到一个认知以外的值时,请优先排除with

浙公网安备 33010602011771号