Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   C-Header nach Delphi umfummeln (https://www.delphipraxis.net/30929-c-header-nach-delphi-umfummeln.html)

Meta777 1. Okt 2004 11:54


C-Header nach Delphi umfummeln
 
Hi,

Ich habe versucht eine C-Header-Datei nach Delphi zu konvertieren aber,
da ich kein Plan von C hab, hat es wohl nicht ganz funktioniert...

Folgende Fragen hab:
Was bedeutest das "L" und wie wäre eine korrekte Übersetzung?
Code:
#define MCI_STATE_STOP  0x00000001L
Und wie übersetz man folgendes:
Code:
typedef struct tagMCI_CONTROL_DISPLAY_PARMS
{
   DWORD   dwCallback;
   DWORD   dwState;
} MCI_CONTROL_DISPLAY_PARMS, *PMCI_CONTROL_DISPLAY_PARMS, FAR *LPMCI_CONTROL_DISPLAY_PARMS;
Besonderst das "tagMCI_CONTROL_DISPLAY_PARMS" nach dem "typedef struct",
sowie dieses "FAR *LPMCI_CONTROL_DISPLAY_PARMS"-Dinges machen Probleme..

Danke im Voraus

Gottes Segen

toms 1. Okt 2004 12:02

Re: C-Header nach Delphi umfummeln
 
Delphi-Quellcode:
const
    { MCI control message posted to the specified window handle }
    // (because of compatibility to Win95 this value should be greater
    // than WM_USER + 0x100)
    MM_MCI_CONTROL = WM_USER + $300;

  type
    { custom structure for the MCI_CONTROL_DISPLAY command }
    PMCIControlDisplayParms = ^TMCIControlDisplayParms;
    tagMCI_CONTROL_DISPLAY_PARMS = packed record
      dwCallback: DWord;
      dwState: DWord;
    end;
    MCI_CONTROL_DISPLAY_PARMS = tagMCI_CONTROL_DISPLAY_PARMS;
    TMCIControlDisplayParms = tagMCI_CONTROL_DISPLAY_PARMS;

  const
    { dwFlags for the MCI_CONTROL_DISPLAY command }
    MCI_DISPLAY_STATE = $00010000;

    { dwState for the MCI_CONTROL_DISPLAY command }
    MCI_STATE_STOP             = $00000001;
    MCI_STATE_PLAY             = $00000002;
    MCI_STATE_FFWD             = $00000003;
    MCI_STATE_FRWD             = $00000004;
    MCI_STATE_VOR_STOP         = $00000005;
    MCI_STATE_RECORD_INSERT    = $00000006;
    MCI_STATE_RECORD_OVERWRITE = $00000007;
    MCI_STATE_RECSTBY_INSERT   = $00000008;
    MCI_STATE_RECSTBY_OVERWRITE = $00000009;

static_cast 1. Okt 2004 12:07

Re: C-Header nach Delphi umfummeln
 
Hi,

da war der toms schneller mit dem source ;)

aber zur erklärung:

das L bedeutet long in delphi könntest du schreiben

Delphi-Quellcode:
const MCI_STATE_STOP:Longint = $00000001;
das tagMCI_CONTROL_DISPLAY_PARMS nach dem typedef struct wäre in delphi den record name.

zu dem FAR, in delphi gibt es keine FAR und NEAR pointer also könntest du es auch so löschen wie in toms code schnipsel.

Hoffe konnte dir helfen.

Robert Marquardt 1. Okt 2004 16:03

Re: C-Header nach Delphi umfummeln
 
Code:
#define MCI_STATE_STOP  0x00000001L
Delphi-Quellcode:
const
  MCI_STATE_STOP = $00000001;
Das L sagt in C das es ein 32-Bit-Wert ist (long).
In Delphi ist die Konstante sowieso 32 Bit.
Einen Typ fuer die Konstante zu vergeben ist kontraproduktiv.


Code:
typedef struct tagMCI_CONTROL_DISPLAY_PARMS
{
   DWORD   dwCallback;
   DWORD   dwState;
} MCI_CONTROL_DISPLAY_PARMS, *PMCI_CONTROL_DISPLAY_PARMS, FAR *LPMCI_CONTROL_DISPLAY_PARMS;
Besonderst das "tagMCI_CONTROL_DISPLAY_PARMS" nach dem "typedef struct",
sowie dieses "FAR *LPMCI_CONTROL_DISPLAY_PARMS"-Dinges machen Probleme..

Fue tagMCI_CONTROL_DISPLAY_PARMS gibt es in Delphi ueberhaupt keine Entsprechung.
Es ist irrelevant. Bei C wuerde es erlauben einen Zeiger auf das Struct im Struct zu deklarieren.
Der Name des Struct-Typs steht ja erst am Ende (MCI_CONTROL_DISPLAY_PARMS) und ist fuer die Deklaration des Pointerelementes noch nicht vorhanden.

Delphi-Quellcode:
type
  PMCI_CONTROL_DISPLAY_PARMS = ^MCI_CONTROL_DISPLAY_PARMS;
  LPMCI_CONTROL_DISPLAY_PARMS = ^MCI_CONTROL_DISPLAY_PARMS;
Das FAR sagt nur das es ein 32-Bit Pointer ist und ist genau wie bei Delphi veraltet und irrelevant.

shmia 1. Okt 2004 16:10

Re: C-Header nach Delphi umfummeln
 
Zitat:

Zitat von Meta777
Ich habe versucht eine C-Header-Datei nach Delphi zu konvertieren aber,
da ich kein Plan von C hab, hat es wohl nicht ganz funktioniert...

Die Konvertiererei lässt sich auch mit einem Tool erledigen.
http://www.drbob42.com/headconv/

Meta777 4. Okt 2004 18:53

Re: C-Header nach Delphi umfummeln
 
vielen Dank für sehr hilfreichen Antworten. :)

:dp: :spin:


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