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 des Union C/C++ vers Delphi (usage DLL)


Sujet :

Langage Delphi

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 15
    Points : 9
    Points
    9
    Par défaut Traduction des Union C/C++ vers Delphi (usage DLL)
    Salut,

    J'essais de traduire un fichier .h de visual C++ pour utilisé une DLL
    J'epprouve qq difficulté avec 2 chose :
    1°) les unions
    2°) "unsigned char snsMag:5;" que veut dire le chiffre 5 ?

    Merci de votre Aide
    Craft0n

    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
    21
    22
    23
    24
        struct Cbi{//callback information
            void    *handle;
            unsigned status;
            union{
                unsigned error;
                struct{
                    unsigned char errPrinting:1;   
                    unsigned char errCoding:1;   
                    unsigned char errPaperJam:1;
                    unsigned char errCutter:1;
                    unsigned char errNoPaper:1;
                };
            };
            union{
                unsigned sensors;
                struct{
                    unsigned char snsAOP:1;
                    unsigned char snsTemp:1;
                    unsigned char snsHead:1;
                    unsigned char snsMag:5;
                    unsigned char snsPrn;
                };
            };
        };

  2. #2
    Membre averti

    Profil pro
    Enseignant
    Inscrit en
    Juillet 2003
    Messages
    296
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Juillet 2003
    Messages : 296
    Points : 441
    Points
    441
    Par défaut
    Je ne suis pas sûr à 100%, mais je crois que c'est le nombre de bits. En C, char:1 indique que l'on va utiliser seul 1 bit du char.

    Mais demande confirmation, ou regarde du côté de la FAQ C/C++, c'est peut-être expliqué...

    edit: j'ai oublié de parler des unions
    Une union, c'est une zone mémoire partagée (en très gros). Ca veut dire qu'une même variable peut avoir plusieurs types différents (char, integer, ...) . Tu est obligé de trantyper de manière explicite, et la taille en mémoire dépend de la taille du plus grand membre de l'union (en clair, si tu as char U real, la taille mémoire sera du plus grand, à savoir real).

    Ceci dit, je ne sais pas si il y a un équivalent en Delphi...

    J'espère que mon explication te servira...

  3. #3
    Expert éminent Avatar de Graffito
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    5 993
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 5 993
    Points : 7 903
    Points
    7 903
    Par défaut
    Bonjour,

    Pour un exemple d'union, regarde la documentation Delphi du Trect.
    " Le croquemitaine ! Aaaaaah ! Où ça ? " ©Homer Simpson

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Merci bien je m'attelle a la tache

  5. #5
    Rédacteur

    Avatar de gege2061
    Femme Profil pro
    Administrateur de base de données
    Inscrit en
    Juin 2004
    Messages
    5 840
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Administrateur de base de données

    Informations forums :
    Inscription : Juin 2004
    Messages : 5 840
    Points : 11 625
    Points
    11 625
    Par défaut
    Bonjour,
    Citation Envoyé par Big
    Mais demande confirmation
    Je confirme, c'est bien ça

    [langage="C"]
    Il semblerai que le but de l'union, ici, est de pouvoir accéder au différents bytes de la variable errors et sensors. Un peu comme on pourrait le faire avec les masque : Combiner plusieurs options en un seul paramètre ? mais plus explicitement en utilisant des noms de champs (par exemple .errPrinting pour le premier byte...)
    [/langage]

    Voilà désolé pour ce hors sujet mais comme la question porte sur les deux langages et que je passais pas là, je me suis permis

  6. #6
    Rédacteur


    Profil pro
    Inscrit en
    Janvier 2003
    Messages
    7 171
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2003
    Messages : 7 171
    Points : 15 060
    Points
    15 060
    Billets dans le blog
    1
    Par défaut
    Salut;
    Citation Envoyé par gege2061
    Voilà désolé pour ce hors sujet
    Non,non tu es en plein dedans mais pas du même coté de la barriére ( du langage bien évidemment)

  7. #7
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 15
    Points : 9
    Points
    9
    Par défaut
    Encore Merci.

    Au final j'ai simplement traduit ca par :

    sCbi = packed record
    handle : pointer;
    status : cardinal;
    error : cardinal;
    sensors: cardinal;
    end;

    les bit je les test par des masques par ailleurs

    Interresante notation en tout cas.

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

Discussions similaires

  1. [MLD] Traduction des contraintes Merise/2 vers le MLD
    Par phdevp49 dans le forum Schéma
    Réponses: 2
    Dernier message: 21/03/2013, 15h35
  2. Traduction d'un code en C++ vers Delphi
    Par saidus dans le forum Langage
    Réponses: 3
    Dernier message: 06/11/2007, 16h55
  3. Réponses: 3
    Dernier message: 05/10/2005, 17h19
  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