Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/delphi/8.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Web services 如何在Delphi中为soap rtl应用补丁?_Web Services_Delphi_Soap_Delphi Xe3_Bpl - Fatal编程技术网

Web services 如何在Delphi中为soap rtl应用补丁?

Web services 如何在Delphi中为soap rtl应用补丁?,web-services,delphi,soap,delphi-xe3,bpl,Web Services,Delphi,Soap,Delphi Xe3,Bpl,我已经更正了soap单元中的一个错误(soap.OPToSOAPDomConv.pas),但我不知道如何重建soaprtl170.bpl(Delphi XE3) 我需要这样做,因为我需要在ide中安装一个需要bpl的组件,当在表单中删除它并激活它时,它会在设计模式下进行webservice调用 在设计模式中,它似乎使用了soaprtl,而不是我修改的Soap.OPToSOAPDomConv.dcu。 在运行时,它可以工作,因为我没有使用运行时包,并且我的dcu优先 任何关于如何重新编译bpl的帮

我已经更正了soap单元中的一个错误(
soap.OPToSOAPDomConv.pas
),但我不知道如何重建
soaprtl170.bpl
(Delphi XE3)

我需要这样做,因为我需要在ide中安装一个需要bpl的组件,当在表单中删除它并激活它时,它会在设计模式下进行webservice调用

在设计模式中,它似乎使用了soaprtl,而不是我修改的
Soap.OPToSOAPDomConv.dcu
。 在运行时,它可以工作,因为我没有使用运行时包,并且我的dcu优先

任何关于如何重新编译bpl的帮助都将不胜感激

我想在该文件中应用的具体补丁如下:

function TOPToSoapDomConvert.InvContextToMsg(const IntfMD: TIntfMetaData; MethNum: Integer;
                                         Con: TInvContext; Headers: THeaderList): TStream;
...
(line 1446)
if not IsBareLiteral then
  MethNode := BodyNode.AddChild(ExtMethName, SoapMethNS,true)
else
  MethNode := BodyNode;
...

修补程序包括将true添加到addChild。

您需要打开
dpk
,它是
bpl
文件的源,以便重新编译bpl。不确定事情是否已经从D2007到Delphi-Xe3的方式发生了变化。不确定您是否能够轻松做到这一点。在运行时用代码钩子修补会更容易。@Johan,问题是soaprtl170的dpk没有提供源代码…@DavidHeffernan,我不知道怎么做。你有什么消息来源可以让我知道那个钩住的过程吗?谢谢您是否可以扩展该问题以显示您需要应用的修复