Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C(++) -> Delphi: IN const PVOID pContext... (https://www.delphipraxis.net/97680-c-delphi-const-pvoid-pcontext.html)

Die Muhkuh 14. Aug 2007 13:16


C(++) -> Delphi: IN const PVOID pContext...
 
Hi,

hab hier folgende C(++) Funktion (?):

Code:
typedef DWORD (WINAPI *OnButtonsCB)(IN int device,
                                             IN DWORD dwButtons,
                                             IN const PVOID pContext);
Soweit komme ich in Delphi:

Delphi-Quellcode:
function OnButtonsCB(device: Integer; dwButtons: DWORD;
  const pContext: {PVOID}): DWORD;
Ist das soweit richtig? Was fang ich mit diesem PVOID an? Könnte das ein Pointer auf eine Procedure sein?

Mfg

OregonGhost 14. Aug 2007 13:24

Re: C(++) -> Delphi: IN const PVOID pContext...
 
PVOID = Pointer to void = void*, also in Delphi einfach Pointer.

WINAPI bedeutet außerdem, wenn ich mich nicht irre, dass du deine Funktion als stdcall deklarieren musst.

Die Muhkuh 14. Aug 2007 13:26

Re: C(++) -> Delphi: IN const PVOID pContext...
 
Hi OregonGhost,

ein einfacher Pointer, ok. :D

Das mit WINAPI und stdcall wird wohl auch sein, da eine *.lib-Datei benötigt wird.

hoika 14. Aug 2007 13:36

Re: C(++) -> Delphi: IN const PVOID pContext...
 
Hallo,

was hat denn eine Lib damit zu tun ?
AFAIK ist die Lib in c++ in diesem Fall dafür,
dass du nach dem Einbinden direkt die Dll-Funktionen aufrufen kannst.


Heiko

Die Muhkuh 14. Aug 2007 13:47

Re: C(++) -> Delphi: IN const PVOID pContext...
 
Hieße das, dass ich die .lib nicht mit Delphi ansprechen kann?

Der_Unwissende 14. Aug 2007 13:48

Re: C(++) -> Delphi: IN const PVOID pContext...
 
Zitat:

Zitat von hoika
AFAIK ist die Lib in c++ in diesem Fall dafür,
dass du nach dem Einbinden direkt die Dll-Funktionen aufrufen kannst.

Ein Lib ist doch in C/C++ nur eine statisch gelinkte Bibliothek. Eine solche Bibliothek wird einfach schon für das Linken benötigt und es werden eben die dort gelinkten Code-Stücke direkt in das Programm übernommen. Zur Laufzeit ist die entsprechende *.lib (soweit ich weiß) nicht mehr nötig, dyn. Laden erst zur Laufzeit ist zudem nicht vorgesehen.

Gruß Der Unwissende

Die Muhkuh 14. Aug 2007 13:54

Re: C(++) -> Delphi: IN const PVOID pContext...
 
Hi,

dann hol ich ein bisschen weiter aus.

Ich versuche gerade die Header-Datei des Logitech-G15-SDKs zu übersetzen. Dazu gibt es eine lglcd.h, sowie diese lglcd.lib.

In C(++) benutzen die das dann so:

Code:
// include the Logitech LCD SDK header
#include "../../include/lglcd.h"
// make sure we use the library
#pragma comment(lib, "lgLcd.lib")
Ich möchte, per Delphi, das LCD der G15-Tastatur ansteuern.

Der_Unwissende 14. Aug 2007 13:59

Re: C(++) -> Delphi: IN const PVOID pContext...
 
Mit eine lib wird Dir das nicht ohne weiteres gelingen. Wenn die durch einen Borland-Compiler erstellt wurde ist Delphi glaube ich durchaus dazu in der Lage die zu verwenden, bei jedem anderen Compiler hingegen nicht. Der Code ist eben C++ spezifisch gelinkt wurden, da werden die Dinge entsprechend etwas anders aussehen als in Delphi (Namensräume, andere Klassen, Templates, ...), so dass Delphi die eben nicht verwenden kann.

Die Muhkuh 14. Aug 2007 14:02

Re: C(++) -> Delphi: IN const PVOID pContext...
 
Hi,

dann wird mein vorhaben wohl scheitern, da die .lib in C(++) geschrieben wurde.

Jedoch, fällt mir gerade ein, haben andere es schon übersetzt. Jetzt versteh ich auch, warum die noch über eine DLL gehen. Die DLL wurde dann wohl in C(++) geschrieben und linkt diese .lib mit ein.

Robert Marquardt 14. Aug 2007 15:33

Re: C(++) -> Delphi: IN const PVOID pContext...
 
Code:
typedef DWORD (WINAPI *OnButtonsCB)(IN int device,
                                             IN DWORD dwButtons,
                                             IN const PVOID pContext);
uebersetzt zu:
Delphi-Quellcode:
type
  OnButtonsCB = function(device: Integer; dwButtons: DWORD; pContext: Pointer): DWORD; stdcall;


Alle Zeitangaben in WEZ +1. Es ist jetzt 21:45 Uhr.
Seite 1 von 2  1 2      

Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz