我想将QC中的修复应用到Delphi 2009单元(DBClient,因为它发生).我知道我需要将设备复制到另一个目录并对副本进行更改.然后我如何让Delphi编译该单元并使用它来支持已经存在的DCU?
我们有一个修改过的menus.pas.
在
uses ...,Controls,...;
Run Code Online (Sandbox Code Playgroud)
编译器引发了致命错误:
[DCC致命错误] Menus.pas(*):F2051单元控件是使用不同版本的Menus编译的.TPopupMenu
尝试:
删除了项目中的所有dcu.
建立
建立所有
尝试将文件添加到库路径,这导致添加db文件夹(也来自vcl)然后再添加到
[DCC错误] jpeg.pas(872):E2065不满意的前向或外部声明:'jpeg_save_markers'
这是一个死胡同.
删除了controls.dcu(全部3个),并且delphi不知道自动重新编译它们,而是报告控制器丢失了.
我需要在Classes.pas中修补一个方法
(TReader.ReadString - 我想强制它使用指定的代码页,而不是系统默认值).
如果我将Classes.pas复制到我的项目中,我最终将不得不重建整个VCL.有没有(简单)方法在运行时修补方法?
我正在为大型Delphi代码库编写单元测试基础结构.我想将SysUtils.FileExists中对纯函数的调用链接到例如"MockSysUtils.FileExists".
编译器不支持创建具有相同接口的SysUtils单元.
我在想的是在运行时挂钩我的mock函数.现在这可能吗?
还有其他建议吗?
问候,
彼得
我正在使用Delphi XE.我使用Delphi Soap遇到了内存泄漏问题.事实证明,由于QC 91160中TWSDLLookup.Destroy描述的失败
我遇到的问题是所描述的解决方法,它只是添加FLookup.Free到TWSDLLookup.Destroy方法中.
我不想改变Delphi源,所以我试图单位复制到我的项目文件夹,进行更改和重新编译,如所描述这里汤姆的回答.这种技术的问题在于它显然只有在你重新编译所有依赖单元时才有效.我试过只复制WSDLLookup.pas到我的项目目录,我得到一个Stackoverflow错误.我不熟悉Web Services/SOAP,所以如果我使用这种技术,我不知道应该复制哪些其他单元.
Rob Kennedy在同一页面上的回答描述了一种涉及代码挂钩的不同技术 - 但它似乎并不适用于对象方法.我已经完成了他的建议并下载了TNT Unicode控件的免费代码并找到了相关的程序,但我一直无法找到有关如何挂钩对象方法的信息 - 如果这确实可行的话.如果我能做到这一点,我会挂钩TWSDLLookup.Destroy并添加FLookup.Free通话.
如何解决这个问题的任何想法将非常感激.我是一个新手程序员,所以我希望我错过了一些明显的东西?
delphi ×5
delphi-2009 ×2
compilation ×1
delphi-units ×1
delphi-xe ×1
hook ×1
memory-leaks ×1
unit-testing ×1
vcl ×1