I need to use a DLL created using .NET framework. This DLL is made COM visible.
I want to use this DLL in an application created using Delphi 2006. I have followed following steps:
Imported the type library using Delphi IDE. It created _TLB.pas file. Following signature was created in TLB file.
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;
I tried to call the method using following code snippet.
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;
But I get following error when Process method is called.
Please can you suggest any solution?
Try initializing the WideStrings
(s1
,s2
,s3
,s4
, and maybe even o
). If I recall correctly, they are dynamic in Delphi and nil (000000000) before you set them up.