我们正在使用的第三方 .DLL 文件中有一个错误,我已被指派修复它。该库是由最后聘请维护代码的公司制作的,我们只有一些源代码。每当用于处理的对象在我们拥有的代码中时,它们都是 OleVariants 的形式。我的解决方案是创建一个有 bug 的子类,并重写该方法来纠正 bug。问题是,每当我尝试从父类调用方法时,我都会从不同的 .DLL 文件中收到内存访问冲突错误。
我是一个完整的 Delphi 新手,这是我使用它的第三周。任何帮助,将不胜感激。
谢谢你。
编辑:我可能应该详细说明一下。我将原始对象替换为具有修复程序的新类的实例。我正在尝试将原始对象从 OleVariant 转换为新类并将其重新转换或将其传递给新对象的构造函数,以便我可以维护对象中的数据。我想知道是否有办法做到这一点,并且当我调用继承的函数或从对象转换回其原始类型后的函数时不会出错。再次感谢你。
编辑 2:为了回答一个问题,我试图从 OleVariant 转换为它的原始类或我创建的子类。
回答第二个问题:我导入了所涉及的库,然后写了以下内容:
Subclass = class(SuperclassFromDll)
其中“Subclass”和“SuperclassFromDll”是实际的类名。如果这不是正确的方法,请告诉我如何替换有问题的函数(可能通过将修复写入 DllName_TLB 单元?)。抱歉有任何不清楚的地方,我正在尝试快速提出这个问题,以便我可以重新尝试解决这个问题。
编辑 3:我还应该注意到 DLL 文件是从前一家公司的 Delphi 项目创建的。