【发布时间】:2011-01-27 19:58:57
【问题描述】:
遇到MyObj.classnameis(TMyClass.classname) 为真且TMyClass(MyObj) 有效但(MyObj as TMyclass).doSomething 引发转换错误的问题。
我真的不希望对那些垃圾有任何帮助,但如果你想把它放在 cmets 中,那就太好了。我只是想知道Obj as Class和Class(Obj)有什么区别。
【问题讨论】:
-
那是相当多的标签。我认为'delphi'就足够了。
-
感谢您指出我刚才指出的问题
-
您使用 DLL 吗? DLL 混淆了类标识。
-
是的,很确定这是一个 DLL 问题。
-
是的,这可能是问题的一部分。 DLL 包含它们自己的声明对象的单元的副本。类型检查通过比较基本上是 VMT 指针的类引用来工作。如果 EXE 和 DLL 都有自己的 VMT 副本,则检查将失败。这就提出了一个问题,为什么要将对象传入和传出 DLL?
标签: delphi casting typecast-operator