IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Langage Delphi Discussion :

Traduction C -> Delphi


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Traduction C -> Delphi
    Hello,

    J'utilise une DLL écrite en C avec la fonction suivante :

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    BOOL FT_W32_GetCommState (FT_HANDLE ftHandle, LPFTDCB lpftDcb)

    mon problème est dans la traduction de la structure ftDCB

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    typedef struct _FTDCB {
    DWORD DCBlength; // sizeof(FTDCB)
    DWORD BaudRate; // Baudrate at which running
    DWORD fBinary: 1; // Binary Mode (skip EOF check)
    DWORD fParity: 1; // Enable parity checking
    DWORD fOutxCtsFlow:1; // CTS handshaking on output
    //...
    char ErrorChar; // Error replacement char
    char EofChar; // End of Input character
    char EvtChar; // Received Event character
    WORD wReserved1; // Fill
    } FTDCB, *LPFTDCB;

    Comment est-ce que je peux traiter les champs de bit ?

    Merci pour vos suggestions !

  2. #2
    Expert éminent sénior
    Avatar de Paul TOTH
    Homme Profil pro
    Freelance
    Inscrit en
    Novembre 2002
    Messages
    8 964
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Freelance
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2002
    Messages : 8 964
    Points : 28 448
    Points
    28 448
    Par défaut
    Citation Envoyé par stroumpf Voir le message
    mon problème est dans la traduction de la structure ftDCB

    Code C : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    typedef struct _FTDCB {
    DWORD DCBlength; // sizeof(FTDCB)
    DWORD BaudRate; // Baudrate at which running
    DWORD fBinary: 1; // Binary Mode (skip EOF check)
    DWORD fParity: 1; // Enable parity checking
    DWORD fOutxCtsFlow:1; // CTS handshaking on output
    //...
    char ErrorChar; // Error replacement char
    char EofChar; // End of Input character
    char EvtChar; // Received Event character
    WORD wReserved1; // Fill
    } FTDCB, *LPFTDCB;

    Comment est-ce que je peux traiter les champs de bit ?

    Merci pour vos suggestions !
    alors le plus simple est d'utiliser un code C pour afficher les "sizeof" des structures, ça évite bien des problèmes

    sinon il faut déclarer quelque chose comme ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    type
     TFlags=set of (fBinary,fParity,fPOutxCtsFlow);
     FTDCB=packed record
      DCBlength:cardinal; // sizeof(FTDCB)
      BaudRate:cardinal; // Baudrate at which running
      Flags     : TFlags;{
     DWORD fBinary: 1; // Binary Mode (skip EOF check)
     DWORD fParity: 1; // Enable parity checking
     DWORD fOutxCtsFlow:1; // CTS handshaking on output
    }
     ErrorChar:char; // Error replacement char
     EofChar:char; // End of Input character
     EvtChar:char; // Received Event character
     wReserved1:word; // Fill
     end;
     LPFTDCB=^FTDCB;
    là c'est possible car les bits sont isolés, mais sinon tu aurais du faire ceci en travaillant avec des "Flags AND fBinary"...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
     
    const
     fBinary=1;
     fParity=2;
     fOutxCtsFlow=4;
    type
     FTDCB=packed record
      DCBlength:cardinal; // sizeof(FTDCB)
      BaudRate:cardinal; // Baudrate at which running
      Flags     : byte;{
     DWORD fBinary: 1; // Binary Mode (skip EOF check)
     DWORD fParity: 1; // Enable parity checking
     DWORD fOutxCtsFlow:1; // CTS handshaking on output
    }
     ErrorChar:char; // Error replacement char
     EofChar:char; // End of Input character
     EvtChar:char; // Received Event character
     wReserved1:word; // Fill
     end;
     LPFTDCB=^FTDCB;
    Developpez.com: Mes articles, forum FlashPascal
    Entreprise: Execute SARL
    Le Store Excute Store

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Juin 2006
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Merci Paul !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Pb traduction C en Delphi
    Par chrisgood dans le forum Langage
    Réponses: 9
    Dernier message: 28/04/2010, 11h58
  2. Problème de traduction C vers Delphi
    Par BobaL dans le forum API, COM et SDKs
    Réponses: 2
    Dernier message: 23/02/2009, 14h15
  3. traduction structure en Delphi (suite)
    Par skywaukers dans le forum Delphi
    Réponses: 10
    Dernier message: 15/06/2007, 22h41
  4. Traduction C++ vers Delphi
    Par lil_jam63 dans le forum Langage
    Réponses: 6
    Dernier message: 05/07/2004, 13h10
  5. probleme traduction C vers Delphi
    Par zinaif dans le forum Langage
    Réponses: 3
    Dernier message: 27/06/2003, 08h51

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo