当前位置:  开发笔记 > 编程语言 > 正文

在delphi中使用COM DLL - MSVCR80D.dll错误中的访问冲突

如何解决《在delphi中使用COMDLL-MSVCR80D.dll错误中的访问冲突》经验,为你挑选了1个好方法。

我需要使用使用.NET框架创建的DLL.此DLL使COM可见.

我想在使用Delphi 2006创建的应用程序中使用此DLL.我已按照以下步骤操作:

    使用regscr32注册DLL.

    使用Delphi IDE导入类型库.它创建了_TLB.pas文件.签名是在TLB文件中创建的.

    function TValidationRequest.Process(var meterBSN: WideString; var NICSerial: WideString; 
                                        var partNumber: WideString; var otherConfig: WideString; 
                                        out returnMessage: WideString): Smallint;
    begin
      Result := DefaultInterface.Process(meterBSN, NICSerial, partNumber, otherConfig, returnMessage);
    end;
    

    我尝试使用以下代码片段调用该方法.

procedure TForm1.buttonClick(Sender: TObject);
var
  valReq: TValidationRequest;
  s1, s2, s3, s4, s5: WideString;
  o: WideString;
begin
  valReq := TValidationRequest.Create (Self);
  try
    valReq.Process (s1, s2, s3, s4, o);
    MessageDlg(o, mtInformation, [mbOK], 0);
  finally
    valReq := nil;
  end;
end;

但是在调用Process方法时出现以下错误. alt text http://i41.tinypic.com/2daf1ix.png

请问您能提出任何解决方案吗?



1> MarkusQ..:

尝试初始化WideStrings(s1,s2,s3,s4,甚至可能o).如果我没记错的话,在你设置它们之前它们在Delphi和nil(000000000)中是动态的.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有