AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

C-Header nach Delphi umfummeln

Ein Thema von Meta777 · begonnen am 1. Okt 2004 · letzter Beitrag vom 4. Okt 2004
Antwort Antwort
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#1

C-Header nach Delphi umfummeln

  Alt 1. Okt 2004, 12:54
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
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#2

Re: C-Header nach Delphi umfummeln

  Alt 1. Okt 2004, 13:02
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;
Thomas
  Mit Zitat antworten Zitat
static_cast

Registriert seit: 19. Okt 2003
Ort: Peine
300 Beiträge
 
#3

Re: C-Header nach Delphi umfummeln

  Alt 1. Okt 2004, 13:07
Hi,

da war der toms schneller mit dem source

aber zur erklärung:

das L bedeutet long in delphi könntest du schreiben

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.
Daniel M.
"The WM_NULL message performs no operation. An application sends the WM_NULL message if it wants to post a message that the recipient window will ignore."
  Mit Zitat antworten Zitat
Robert Marquardt
(Gast)

n/a Beiträge
 
#4

Re: C-Header nach Delphi umfummeln

  Alt 1. Okt 2004, 17:03
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.
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#5

Re: C-Header nach Delphi umfummeln

  Alt 1. Okt 2004, 17:10
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/
Andreas
  Mit Zitat antworten Zitat
Meta777

Registriert seit: 8. Sep 2004
Ort: Magdeburg
248 Beiträge
 
Delphi 10 Seattle Enterprise
 
#6

Re: C-Header nach Delphi umfummeln

  Alt 4. Okt 2004, 19:53
vielen Dank für sehr hilfreichen Antworten.

  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:19 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