AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C++ Header in Delphi übersetzen

Ein Thema von Strally · begonnen am 12. Apr 2012 · letzter Beitrag vom 12. Apr 2012
Antwort Antwort
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
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#2

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 14:56
so ist es wahrscheinlich auch nicht besser?
Delphi-Quellcode:
var
  pHandle : THandle;
  sFile : WideString;
  s : PWideChar;
begin
  sFIle := 'Pfad der Datei';
  if MwmOnrmXmlImpInit((@pHandle),'0',pError) then //<-- dieser Aufruf funktioniert
  begin
     s := @sFile[1];
     if MwmOnrmXmlImpOpen(pHandle,s) then //Hier kommt eine Zugriffsverletzung
  end;
end;
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#3

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 14:57
Bist Du Dir sicher, dass der PWideChar-Parameter ein Variablenparameter ist? Und Dein Konstrukt mit den Aufrufkonventionen verstehe ich auch nicht ganz, müsste das nicht immer cdecl sein? Allerdings kenne ich mich mit C/C++ zu wenig aus, um gesicherte Antworten zu geben.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Strally

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

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 14:59
Danke für den Hinweis - habe es getestet leider bleibt
das Ergebnis das gleiche.

Mfg
Strally
  Mit Zitat antworten Zitat
Strally

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

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 15:01
@DeddyH:

Tja das ist das Problem ich bin auch net ganz sattelfest in C
Habe das .h File von einem Autokonverter übersetzen lassen - allerdings ist er bei
wchar_t* ausgestiegen und ich das als PWideChar deklariert.
Aber ich werde mal deinen Vorschlag testen - Danke.

Mfg
Strally

Geändert von Strally (12. Apr 2012 um 15:04 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#6

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 15:06
Wie schon gesagt, ohne jede Gewähr:
Delphi-Quellcode:
type
  fPHandle = ^THandle;

 MwmOnrmXmlImpInit: function(phOnrm: fPHandle; pszLicenseId : PWideChar;
                              var pErrorInfo: tagMwmOnrmXmlError): Bool; cdecl;

 MwmOnrmXmlImpOpen: function(hOnrm: THandle;
                             pszFile: PWideChar): Bool; cdecl;
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Strally

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

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 15:08
Also ich muss schon sagen ihr seid toll !!!

Der Tipp von TeddyH scheint zu fruchten - konnte die Routine jetzt ohne Zugriffsverletzung starten

Vielen Dank nochmal - falls es weitere Probleme geben sollte melde ich mich nochmals.

Schönen Nachmittag noch.

Mfg
Strally
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.625 Beiträge
 
Delphi 12 Athens
 
#8

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 15:13
Ich wäre Dir sehr verbunden, wenn Du meinen Nick richtig schreiben würdest
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Bummi
Bummi

Registriert seit: 15. Jun 2010
Ort: Augsburg Bayern Süddeutschland
3.470 Beiträge
 
Delphi XE3 Enterprise
 
#9

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 15:14

Zitat:
TeddyH
Thomas Wassermann H₂♂
Das Problem steckt meistens zwischen den Ohren
DRY DRY KISS
H₂ (wenn bei meinen Snipplets nichts anderes angegeben ist Lizenz: WTFPL)
  Mit Zitat antworten Zitat
Strally

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

AW: C++ Header in Delphi übersetzen

  Alt 12. Apr 2012, 15:24
Sorry
kommt nicht wieder vor!
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 17:53 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz