我正在调试使用Delphi 6 Pro与DSPACK代码库创建的DirectShow过滤器。当我设置的断点在一个名为BaseClass.pas的特定单元中命中时,我开始跟踪,执行点跳转到源代码中的奇怪位置。这通常表示被跟踪的源代码与编译到Delphi应用程序使用的其中一个包中的源代码不匹配。奇怪的是,它只是BaseClass单元,因为我追踪了属于DSPACK代码库的其他单元,并且它们没有出现这个问题。我没有使用运行时软件包。断点击中时,单元源代码与代码执行路径不匹配
我扫描了我的磁盘,发现只有一个修改日期等于上次构建程序的BaseClass.dcu副本。我没有修改该单元或任何其他属于DSPACK的源代码。由于我的过滤器是主应用程序的一部分,因此它指示BaseClass.pas将受制于双重使用情况,因为它用于构建DSPACK组件包(dpk),并且也由我的主应用程序直接通过TBCSource对象引用我的过滤器从下降。请注意,我尝试将单位PAS文件直接添加到我的项目中,但这并没有解决任何问题。
我也回去重新打开了每个DSPACK包文件,并完成了重新构建。这些都没有帮助。还有什么我可以尝试让源与BaseClass单元的编译图像同步吗?或者完全是一个不同的问题,如果是这样,它是什么,我该如何解决它?
谢谢你提醒我。我只是尝试了你的建议,不幸的是没有改变。 –
我记得很久以前我写了一个实用工具,专门用来清理任何*垃圾字符的Delphi文件,并确保所有行尾字符都是真正的CRLF对。我找到它并在BaseClass.pas上运行,错误消失。所以记事本保存/重新加载在某些情况下显然是不够的,但它是一个垃圾邮件字符问题。不幸的是,这让我们失去了几个小时,但很高兴它已经修复了。 –
:)这就是为什么我说“有时”,而不是“你可以修复”。很高兴我可以帮忙,即使它有点儿。 –