Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Problem beim übersetzen von C-Header (https://www.delphipraxis.net/169645-problem-beim-uebersetzen-von-c-header.html)

dal 2. Aug 2012 11:02

Problem beim übersetzen von C-Header
 
Hallo,

ich bin grade dabei eine DLL in mein Delphi Projekt einzubinden. Dafür habe ich die Header Datei von C in Pascal übersetzt.
Bin mir aber an einer Stelle nicht sicher ob ich es richtig gemacht habe, vielleicht kann mir einer dabei helfen.
Hier der originale C Code aus der Header:

Code:
    typedef void ( CAMAPI *Cam_AsyncCallback )
    (
    void*               userPtr,           // User defined
    unsigned long      userData,          // User defined
    Cam_Err           errcode,           // Error code
    unsigned long      flags              // Combination of flags (see Cam_qcCallbackFlags)
    );
und hier die gleiche Stelle in Delphi
Delphi-Quellcode:
 
   type
    Cam_AsyncCallback = procedure(userPtr:Pointer;userData:LongInt;errcode:Cam_Err;flags:LongInt); stdcall;

Wäre für ein Feedback dankbar.

ChrisE 2. Aug 2012 11:13

AW: Problem beim übersetzen von C-Header
 
Hi,

was mir auffällt ist zum einen
Code:
unsigned long     flags
das würde ich eher mit
Delphi-Quellcode:
flags: ULong
übersetzen.
Außerdem ist hier noch nicht klar, was der Typ
Code:
Cam_Err
sein soll.
Und ich bin mir auch nicht sicher, wie das mit
Delphi-Quellcode:
cdecl
bei/anstatt
Delphi-Quellcode:
stdcall
is. Evtl. braucht man das hier?

Gruß, Chris

dal 2. Aug 2012 12:05

AW: Problem beim übersetzen von C-Header
 
Hallo Chris,

ich hab natürlich nicht alles gepostet Cam_Err ist ein eigener Typ den ich oben definiert habe.
Im Internet hab ich gelesen dass unsigned long in Pascal LongInt oder Cardinal ist.

Bei den anderen Funktionen rufe ich auch stdcall auf, das ist so vorgegeben in der Beschreibung.

Ich wollte nur wissen ob ich die Struktur richtig verstanden habe. Es handelt sich meiner Meinung
nach um einen Zeiger auf eine Funktion oder? Da ich so etwas noch nie in Delphi benutz habe, bin ich mir
hierbei etwas unsicher.

p80286 2. Aug 2012 12:16

AW: Problem beim übersetzen von C-Header
 
unsigned...=Cardinal
Da ist nichts mit "oder"

Gruß
K-H


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