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

Hem*_*ant 4 .net delphi com dll delphi-2006

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

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

  1. 使用regscr32注册DLL.
  2. 使用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;
    
  3. 我尝试使用以下代码片段调用该方法.

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

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

Mar*_*usQ 7

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