Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi DLL (c++) in Delphi nutzen (https://www.delphipraxis.net/97799-dll-c-delphi-nutzen.html)

nils.addi 16. Aug 2007 15:02


DLL (c++) in Delphi nutzen
 
Hallo zusammen!

Ich stehe vor einem kleinen Problem. Ich habe eine DLL, in der lt. Header-Datei folgende Function beschrieben wird:
Delphi-Quellcode:
THIRDDLL bool ThirdOpenRS232Mode(unsigned char ComPort, unsigned int Speed, unsigned char DataMode, int* Obj);
Meine Implementierung in Delphi sieht folgendermaßen aus:
Delphi-Quellcode:
function ThirdOpenRS232Mode (ComPort: byte; Speed: word; DataMode: byte;
                                       Obj : Pointer): boolean; stdcall; external '3rd_DLL2.dll';
Aufgerufen wird die Funktion folgedermaßen:
Delphi-Quellcode:
var obj : integer;

procedure TForm1.Button1Click(Sender: TObject);
var freeports : integer;
begin
  try
     ThirdOpenRS232Mode(1,9600,0,@obj);
  except
  end;
end;
Leider gibt es eine Schutzverletzung. Ich denke, die Deklarationi ist richtig! Kann mir jemand eine Lösung bzw. einen Lösungsansatz anbieten?

Gruß

Nils

DeddyH 16. Aug 2007 15:06

Re: DLL (c++) in Delphi nutzen
 
Ich habe da keine große Erfahrung, aber müsste es nicht so heißen?
Delphi-Quellcode:
function ThirdOpenRS232Mode (ComPort: byte; Speed: Cardinal; DataMode: byte;
                                       var Obj: integer): boolean; stdcall; external '3rd_DLL2.dll';

OregonGhost 16. Aug 2007 15:07

Re: DLL (c++) in Delphi nutzen
 
Roter Kasten kam dazwischen, das noch ergänzend zu DeddyHs Beitrag:
Du solltest einmal nachschauen, ob THIRDDLL wirklich __stdcall enthält. Eventuell ist der C++-bool nicht 1:1 kompatibel mit Delphi-Boolean, aber das weiß ich ehrlich gesagt nicht.

nils.addi 16. Aug 2007 15:25

Re: DLL (c++) in Delphi nutzen
 
Danke für die schnellen Antworten. Leider haben mir beide Tipps nicht weitergeholfen. Noch jemand eine Idee?

DeddyH 16. Aug 2007 15:43

Re: DLL (c++) in Delphi nutzen
 
Noch ein Versuch:
Delphi-Quellcode:
function ThirdOpenRS232Mode (ComPort: byte; Speed: Cardinal; DataMode: byte;
                                       var Obj: integer): bool; cdecl; external '3rd_DLL2.dll';
Aber wie gesagt: ich kann da auch nur raten.

nils.addi 16. Aug 2007 15:59

Re: DLL (c++) in Delphi nutzen
 
Danke DeddyH!

Die Funktion funktioniert jetzt jetzt - true wird zurückgegeben und die Schutzverletzung ist auch weg! :thumb: :thumb:

Gruß

Nils


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:25 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