![]() |
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:
Und wie übersetz man folgendes:
#define MCI_STATE_STOP 0x00000001L
Code:
Besonderst das "tagMCI_CONTROL_DISPLAY_PARMS" nach dem "typedef struct",
typedef struct tagMCI_CONTROL_DISPLAY_PARMS
{ DWORD dwCallback; DWORD dwState; } MCI_CONTROL_DISPLAY_PARMS, *PMCI_CONTROL_DISPLAY_PARMS, FAR *LPMCI_CONTROL_DISPLAY_PARMS; sowie dieses "FAR *LPMCI_CONTROL_DISPLAY_PARMS"-Dinges machen Probleme.. Danke im Voraus Gottes Segen |
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; |
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:
das tagMCI_CONTROL_DISPLAY_PARMS nach dem typedef struct wäre in delphi den record name.
const MCI_STATE_STOP:Longint = $00000001;
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. |
Re: C-Header nach Delphi umfummeln
Code:
#define MCI_STATE_STOP 0x00000001L
Delphi-Quellcode:
Das L sagt in C das es ein 32-Bit-Wert ist (long).
const
MCI_STATE_STOP = $00000001; In Delphi ist die Konstante sowieso 32 Bit. Einen Typ fuer die Konstante zu vergeben ist kontraproduktiv.
Code:
Besonderst das "tagMCI_CONTROL_DISPLAY_PARMS" nach dem "typedef struct",
typedef struct tagMCI_CONTROL_DISPLAY_PARMS
{ DWORD dwCallback; DWORD dwState; } MCI_CONTROL_DISPLAY_PARMS, *PMCI_CONTROL_DISPLAY_PARMS, FAR *LPMCI_CONTROL_DISPLAY_PARMS; 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:
Das FAR sagt nur das es ein 32-Bit Pointer ist und ist genau wie bei Delphi veraltet und irrelevant.
type
PMCI_CONTROL_DISPLAY_PARMS = ^MCI_CONTROL_DISPLAY_PARMS; LPMCI_CONTROL_DISPLAY_PARMS = ^MCI_CONTROL_DISPLAY_PARMS; |
Re: C-Header nach Delphi umfummeln
Zitat:
![]() |
Re: C-Header nach Delphi umfummeln
vielen Dank für sehr hilfreichen Antworten. :)
:dp: :spin: |
Alle Zeitangaben in WEZ +1. Es ist jetzt 22:11 Uhr. |
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