delphi – 如何在Classes.pas中修补方法

栏目: 编程语言 · 发布时间: 5年前

内容简介:我需要在Classes.pas中修补一个方法(TReader.ReadString – 我想强制它使用指定的代码页,而不是系统默认值).如果我将Classes.pas复制到我的项目中,我将不得不重建整个VCL.有没有(简单)方法在运行时修补方法?

我需要在Classes.pas中修补一个方法

(TReader.ReadString – 我想强制它使用指定的代码页,而不是系统默认值).

如果我将Classes.pas复制到我的项目中,我将不得不重建整个VCL.有没有(简单)方法在运行时修补方法?

修改Classes.pas的实现方面不需要重新编译所有内容. Delphi计算出一个单元是否需要通过类似于此的算法重新编译:

>如果发现DCU:

> DCU格式是否过时(旧版编译器)?如果是这样,需要source来重新编译或编译时错误.

>路径上的来源?如果是这样,如果它比DCU更新,则重新编译

>对于每个使用过的单位:

>加载时重复分析

>对于该单位的每个使用过的符号(“import”:类型,变量,例程,初始化常量等):

>导入的符号版本是否与使用过的单位中的符号不​​同?如果是这样,需要重新编译.

>如果未找到DCU,则需要找到并编译源代码,否则编译时错误

符号版本的重要概念.保存DCU时,Delphi会根据符号的接口声明计算散列,并将其与符号关联.使用该符号的其他单位也存储符号版本.这样,与大多数C链接器不同,避免了由过时符号引起的链接时冲突.

这样做的结果是,您应该能够将Classes.pas添加到您的项目中并几乎根据您的内容修改其实现部分,并且仍然能够静态链接其余的RTL和VCL以及第三方库,甚至那些只以对象格式提供的.

要小心的事情:

>内联例程;内联例程的主体是符号版本的一部分

>泛型;泛型类型和方法的实现方是各个符号版本的一部分

翻译自:https://stackoverflow.com/questions/1482311/how-to-patch-a-method-in-classes-pas


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

最优状态估计

最优状态估计

[美] D. 西蒙 / 张勇刚、李宁、奔粤阳 / 国防工业出版社 / 2013-5-1 / 68.00元

《最优状态估计——卡尔曼H∞及非线性滤波》共分为四个部分,全面介绍了最优状态估计的理论和方法。第1部分为基础知识,回顾了线性系统、概率论和随机过程相关知识,介绍了最小二乘法、维纳滤波、状态的统计特性随时间的传播过程。第2部分详细介绍了卡尔曼滤波及其等价形式,介绍了卡尔曼滤 波的扩展形式,包括相关噪声和有色噪声条件下的卡尔曼滤波、稳态滤波、衰减记忆滤波和带约束的卡尔 曼滤波等。第3部分详细介绍了H∞......一起来看看 《最优状态估计》 这本书的介绍吧!

JSON 在线解析
JSON 在线解析

在线 JSON 格式化工具

XML 在线格式化
XML 在线格式化

在线 XML 格式化压缩工具

UNIX 时间戳转换
UNIX 时间戳转换

UNIX 时间戳转换