现在的位置: 首页 > 综合 > 正文

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

2013年09月19日 ⁄ 综合 ⁄ 共 1090字 ⁄ 字号 评论关闭

最近在学习使用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 中

这是今天的学习感悟。

抱歉!评论已关闭.