Je dois utiliser une DLL créée à l'aide de .NET Framework. Cette DLL est rendue COM visible.Utilisation d'une DLL COM dans delphi - Violation d'accès dans l'erreur MSVCR80D.dll
Je veux utiliser cette DLL dans une application créée en utilisant Delphi 2006. J'ai suivi les étapes suivantes:
- a enregistré la DLL à l'aide regscr32.
Importation de la bibliothèque de types à l'aide de l'IDE Delphi . Il a créé le fichier _TLB.pas. La signature suivante a été créée dans le fichier 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;
J'ai essayé d'appeler la méthode en utilisant suivant extrait de code.
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;
Mais je reçois l'erreur suivante lorsque la méthode de processus est appelé. alt text http://i41.tinypic.com/2daf1ix.png
Pouvez-vous suggérer une solution?
Vous rock MarkusQ! Merci beaucoup. Je vous aurais donné 100 votes si je pouvais. :) – Hemant
Beau travail! C'est ce que j'ai remarqué quand je l'ai regardé aussi. @Hermant: Pour une utilisation future, souvenez-vous que les variables locales (déclarées dans un corps de méthode) sont pour la plupart (chaînes exceptées) non initialisées et peuvent contenir n'importe quoi. Vars déclaré globalement ou en tant que champs membres d'une classe sont définis par défaut. –