[原创]使用RemObjects Hydra 开发 RemObjects SDK Service 过程中的异常问题解决

本文分享了使用RemObject SDK开发服务插件的经验,包括常见错误解决方法及调试技巧。介绍了如何避免将THYXXXServer等组件置于插件内,如何引入uROCOMInit单元解决CoInitialize错误,以及如何配置THYRODLReader组件。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

最近在学习使用RemObject开发,经验不足,碰到很多问题,在此列出来:

对于如何使用RemObject Hydra创建RemObject SDK Service Plugin我这里就不多介绍了,具体可以看:

http://www.remobjects.com/devcenter/articles/?id={36786066-BBCB-437B-9B51-6951464A2D79}

创建方法类似

附:服务使用的 THYXXXServer,THYXXMessage 都是放在模块插件主程序那边,千万别放在插件里面,我就犯过这样的错误。呵呵。

在调试运行主程序后,调用:http://localhost:8099/soap 会发现异常:尚未调用 CoInitialize 错误,该错误需要在主工程单元(也就是Project单元)下面的Uses引用

uROCOMInit单元,如果出现没有 uROCOMInit.dcu,那么你可以把它添加到工程里面,该单元你可以在你安装RemObject SDK目录下的 RemObjects SDK for Delphi/Source/uROCOMInit.pas 找到;

如果出现什么 Cannot a TStringList Assign a TStringList 错误,则你需要带包编译工程。这样就可以。

还有,如果你喜欢把RemObjects SDK Service做成Plugin方式,那么记得在模块插件主程序上添加THYRODLReader组件,并把它与其他如Message的关系设置好。

如果你想在MEMO中显示接口信息,可以使用以下代码:

var
  lib : TRODLLibrary;
  i, x : integer;
  defaultintf : TRODLServiceInterface;
begin
  Memo.Lines.Clear;
  HYRODLReader1.ReadFullRODL(lib);
  try
    for i := 0 to (lib.ServiceCount-1) do begin
      Memo.Lines.Add(lib.Services[i].Info.Name);

      defaultintf := lib.Services[i].Items[0];

      for x := 0 to (defaultintf.Count-1) do
        Memo.Lines.Add('----> '+defaultintf.Items[x].Info.Name);
    end;
  finally
    lib.Free;
  end;
end;

 注:TRODLLibrary 在单元:uRODL 中

这是今天的学习感悟。

评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值