【问题标题】:Delphi Application Error with Ole in a DLLDelphi 应用程序错误与 DLL 中的 Ole
【发布时间】:2010-08-06 01:32:30
【问题描述】:

我有一个 Com 对象,通过 DataModule 设置/创建/工作。

从应用程序创建/运行/释放数据模块没有问题。

但第一次将数据模块放入 DLL 工作正常,运行 com 对象等。但在没有重新启动应用程序的情况下进行几次调用后,出现此错误。

Error Message image http://darkaxi0m.name/so/errormessage.GIF

应用程序中有一些代码,所以我不能全部发布, 我在应用程序和 Dll 中都尝试过 MadExcept,但没有成功。 IDE 在似乎没有多大帮助的地方中断...

alt text http://darkaxi0m.name/so/cpubreak.gif

这是处理 DataModule 的代码,在两个测试中的应用程序和 Dll 中使用相同的函数

function GetAmount( Amount : integer; var Info: PChar): integer; stdcall;
 var
  tempInfo: string;
   workerDM : TworkerDM;
 begin
  Result := 0;    
  workerDM := TworkerDM.Create(nil);
    try      
      tempInfo:= Info;
      Result := workerDM.GetAmount(Amount, tempInfo);
      StrPCopy(Info, tempInfo);
    finally
      workerDM.Free;
    end;
 end;

我想责怪 Ole 对象,但它在 Dll 之外工作正常

我什至不知道从哪里开始寻找。

【问题讨论】:

    标签: delphi dll delphi-7 comobject


    【解决方案1】:

    finally 中,您调用的是Free,但应该调用workerDM.Free

    【讨论】:

    • 抱歉,这是 stackoverflow 复制/粘贴和格式化的受害者
    • @Christopher:没问题;我遇到了很多以这种方式错误的现实世界代码,导致很难找到错误。很高兴您的代码没有受到影响。
    【解决方案2】:

    我不相信这个问题可以再回答了。 项目已被抓取,产生错误的对象不再使用。

    我的删除请求没有得到答复。

    这就是我现在的答案。

    【讨论】:

      猜你喜欢
      • 2017-12-02
      • 1970-01-01
      • 2020-07-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-06-01
      相关资源
      最近更新 更多