Autor Beitrag
Querkopf
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 31

Win XP SP2
Turbo Delphi 2006 Explorer
BeitragVerfasst: Mi 08.03.06 13:15 
Hallo

bin mir nicht sicher, ob diese Frage nun im Delphi-Forum oder in nem C-Forum angebracht ist. Da ich aber lieber Delphi programmiere und hier angemeldet bin, hoffe ich mal, dass mir jemand weiterhelfen kann.

Ich habe eine Delphi-DLL mit mehreren stdcalls :

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
procedure registerModule(name, info : PChar); stdcall;
...

procedure unregisterModule; stdcall;
...

procedure setFunction (fctName : PChar; fct : TFunction;
  fctParams, fctResults : IDOMNode; fctInfo : PChar; fctType : TFunctionType);
  stdcall;
...


Die Deklaration unter VC++ sieht so aus

ausblenden Quelltext
1:
typedef void (__stdcall *TFunction1)(LPCSTR,IXMLDOMNodePtr (*TFunction3)(IXMLDOMNodePtr),IXMLDOMNodePtr,IXMLDOMNodePtr,LPCSTR,TFctType);					


Das Aufrufen der ersten beiden Prozeduren klappt reibungslos. Das Problem liegt an den Parametern fctParams und fctResults vom Typ IDOMNode. Sobald ich auf diese Parameter zugreifen möchte, gibts ne Exception.
Ich nutze sowohl in der DLL als auch unter VC++ MSXML. Unter VC++ gibt es dafür den IXMLDOMNodePtr. Die Zeigeradressen stimmen sowohl in VC++ als auch der DLL überein, das hab ich mir ausgeben lassen. Ich habe dann auch mal in Delphi einen Typ IDOMNodePtr = ^IDOMNode deklariert, und diesen in die Parameterliste gesetzt und dann mit ftpParams^ gearbeitet, leider das selbe Resultat.

Ich hoffe, jemand kann mir helfen.

Gruss, Pierre

Moderiert von user profile iconraziel: Code- durch Delphi-Tags ersetzt
Querkopf Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic star
Beiträge: 31

Win XP SP2
Turbo Delphi 2006 Explorer
BeitragVerfasst: Mi 08.03.06 15:17 
Problem behoben. Hab unter Delphi mal ne andere Unit (MSXML2_TLB statt XMLDoc,
XMLIntf,
XMLDom) eingebunden, die ein Pendant zur C++-Header-Datei ist. Damit gehts.