我需要修补Classes.pas中的方法
(TReader.ReadString - 我想强制它使用指定的代码页,而不是系统默认值。)
如果我将Classes.pas复制到我的项目中,我将不得不重建整个VCL。有没有(简单)方法在运行时修补方法?
答案 0 :(得分:19)
修改Classes.pas的实现方面不需要重新编译所有内容。 Delphi计算出一个单元是否需要通过类似于此的算法重新编译:
重要的概念是符号版本。保存DCU时,Delphi会根据符号的接口声明计算散列值,并将其与符号相关联。使用该符号的其他单位也存储符号版本。这样,与大多数C链接器不同,避免了由陈旧符号引起的链接时冲突。
这样做的结果是,您应该能够将Classes.pas添加到您的项目中,并将其实现部分修改为您的内容,并且仍然可以静态链接其他RTL和VCL以及第三方库,甚至是仅以对象格式提供的库。
要小心的事情:
答案 1 :(得分:7)