Einzelnen Beitrag anzeigen

Strally

Registriert seit: 26. Aug 2010
20 Beiträge
 
Delphi 10.4 Sydney
 
#1

C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 14:35
Hallo,

ich habe ein "kleines" Problem beim aufruf einer DLL - es kommt zu einer Zugriffsverletzung.

Der C-Header ist folgendermaßen deklariert:

Code:
DECLARE_HANDLE(HdMWMONRMXMLIMP);     // Handle fuer Import

extern BOOL DLLEXP MwmOnrmXmlImpInit(HdMWMONRMXMLIMP* phOnrm, wchar_t* pszLicenseId,
                                     MwmOnrmXmlError* pErrorInfo);

extern BOOL DLLEXP MwmOnrmXmlImpOpen(HdMWMONRMXMLIMP hOnrm, wchar_t* pszFile);
ich habe das folgendermaßen ih Pascal übersetzt


Delphi-Quellcode:
type
  fPHandle = ^THandle;

 MwmOnrmXmlImpInit: function(phOnrm: fPHandle; pszLicenseId : PWideChar;
                              var pErrorInfo: tagMwmOnrmXmlError): Bool cdecl {$IFDEF WIN32} stdcall {$ENDIF};

 MwmOnrmXmlImpOpen: function(hOnrm: THandle;
                             var pszFile: PWideChar): Bool cdecl; {$IFDEF WIN32} stdcall {$ENDIF};
aufrufen im Code tue ich es folgendermaßen

Delphi-Quellcode:
var
  pHandle : THandle;
  sFile : String;
  s : PWideChar;
begin
  sFIle := 'Pfad der Datei';
  if MwmOnrmXmlImpInit((@pHandle),'0',pError) then //<-- dieser Aufruf funktioniert
  begin
     s := PWideChar(WideString(sFile));
     if MwmOnrmXmlImpOpen(pHandle,s) then //Hier kommt eine Zugriffsverletzung
  end;
end;
laut dem Entwickler der DLL kommt s nur als Hieroglyphen an - aber warum ist das so ?
Was mache ich falsch ???

Ich bedanke mich bereits jetzt für Anregungen und Vorschläge!

Mfg
Strally

Geändert von mkinzler (12. Apr 2012 um 14:41 Uhr) Grund: C-Tag/Delphi-Tags eingefügt
  Mit Zitat antworten Zitat