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

Visual C++ Discussion :

Conversion d'un type predefini par l'utilisateur vers un type int lors d'un return


Sujet :

Visual C++

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

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut Conversion d'un type predefini par l'utilisateur vers un type int lors d'un return
    Bonjour,

    Voila comme le titre le dit bien, je veux convertir un type donne ( FSRetval ) vers un type ( int ) lors du retour vers la fonction.

    Voici le code de la fonction dans laquelle on doit faire cette conversion, alors je dois faire ca juste avant de sortir de cette fonction, avant d'envoyer vers le type de cette meme fonction qui est un entier.

    Remarque: avant j'envoyais simplement un numero en fonctions des erreurs.

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    int CHardware::Init()    //initialisations avec les differents erreurs possible
    {
     try
     {
      FSRetVal tmp;  // le type specifique qu'il faut convertir
      string strFile;
      CInit m_Init;
      
      if(m_bver==0) // le boleen qui dit laquelle des 2 cameras c'est.
       strFile=string((LPCTSTR)(m_Init.Get_Params_Hardware_Config_FileInit()+"BestCamHardware_"+m_Init.Get_Params_Hardware_Config_FileInit_NumA()+".ini")); 
      else
       strFile=string((LPCTSTR)(m_Init.Get_Params_Hardware_Config_FileInit()+"BestCamHardware_"+m_Init.Get_Params_Hardware_Config_FileInit_NumB()+".ini")); 
       tmp = m_pHardware->SetConfigFilePath((char*)strFile.c_str());  
                           
       if(tmp!= FS_SUCCESS)  // FS_SUCCESS chaine que nous envoit la dll 
       {                              // il peut nous envoyer d'autres chaine genre
        if(m_bver==0)           // FS_CANNOT_CONNECT_TO_CAMERA et l'ensemble 
                         //de ces chaines je les #define par des numeros pour chacuns
             {                          
             TRACE("SetConfigFilePath Hardware 1 failed : ");
             TRACE("%s\n", FSRetval_Names[tmp]);
             return tmp; //avant de faire ce return je dois CONVERTIR  
              }
        else 
             {
              TRACE("SetConfigFilePath Hardware 2 failed : ");
              TRACE("%s\n", FSRetval_Names[tmp]);
              return tmp;
              }
       }
        
       TRACE("Init cam :%d  - config :%s\n",m_bver,(char*)strFile.c_str());
       tmp = m_pHardware->Initialize();
       if(tmp!= FS_SUCCESS)
       { 
        m_pHardware->FreeMem();
        if(m_bver==0)
           {
             TRACE("Initialize Hardware 1 NOK :");
             TRACE("%s\n",FSRetVal_Names[tmp]);
              return tmp;
            }
        else 
            {
             TRACE("Initialize Hardware 2 NOK :");
             TRACE("%s\n",FSRetVal_Names[tmp]);
             return tmp; 
            }
       }
       char* p_cdllver;
       p_cdllver=m_pHardware->GetDLLVersion();
       m_Init.Set_Params_Hardware_Config_Dllversion(p_cdllver);
       TRACE("Init Hardware OK pour cam : %d\n",m_bver); 
       return 0;
     }
     catch(...)
     {
      TRACE("Init NOK\n");
      return 1;
     }
    }

    Voici donc la fonction Init() de la classe CHardware. Comment et ou je dois creer la fonction de conversion d'un type vers un autre (le prototype et le corps de la fonction) et comment vais-je l'appeler?

    Merci

  2. #2
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    salut, comment veux tu que l'on reponde à cette question ?
    la convertion d'un type vers un autre suppose que la base d'information des deux types soit compatible.
    exemple un int dans un float, un char dans un int, etc...
    qu'est ce que FSRetVal ? est il représentable par un int ?
    Il ne suffit pas de vouloir pour pouvoir ....

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Bonjour,

    En fait le type FSRetVal est un type propre a la dll des cameras c'est
    tous ce que je sais.
    Mais n'est il pas possible de le convertir par une fonction donnée ou je suppose qu'on doit faire notre propre fonction et ça comment faire ?

    Merci

  4. #4
    Rédacteur
    Avatar de farscape
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Novembre 2003
    Messages
    9 055
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Novembre 2003
    Messages : 9 055
    Points : 17 323
    Points
    17 323
    Par défaut
    si tu ne sais pas ce que tu manipules, comment veut tu le convertir ?
    c'est impossible...

  5. #5
    Futur Membre du Club
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mars 2006
    Messages : 15
    Points : 7
    Points
    7
    Par défaut
    Désolé,

    voila en fait il s'agit d'un typedef enum prenant
    comme valeurs 12 Erreurs


    Il s'agit de retours de valeurs d'une librairie de la caméra.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    static const char* FSRetVal_Names[FS_ERROR_NUMBER] = {	"FS_SUCCESS",												"FS_ERROR_LOW_MEMORY",												"FS_ERROR_BAD_PARAMETER",
    									"FS_ERROR_BAD_PARAMETER_IN_CONFIG_FILE",
    									"FS_ERROR_BAD_CONFIG_FORMAT",												"FS_ERROR_CANNOT_OPEN_FILE",												"FS_ERROR_CANNOT_CREATE_PROCESS",												"FS_ERROR_COMMUNICATION_LOST",												"FS_ERROR_DISK_FULL",												"FS_ERROR_CANNOT_EXECUTE",
    									"FS_ERROR_UNKNOWN",												"FS_ERROR_CAMERA_NOT_FOUND"};
    FSRetVal;


    Dans mon programme j'ai fais des #define correspondant à ces erreurs de texte.

    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    #define FS_ERROR_LOW_MEMORY		 1
    #define FS_ERROR_CANNOT_OPEN_FILE	3

    Voila en fait si je pense bien il faut pouvoir changer static const char* en int ?

    Merci

  6. #6
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 369
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 369
    Points : 41 519
    Points
    41 519
    Par défaut
    1. Tu es sûr que tu ne peux pas faire plus illisible pour ton code cité?
    2. Et tu ne montres pas le code de déclaration de FSRetVal...
    3. Une conversion de pointeur en int n'est pas garantie. En INT_PTR, ça l'est.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

Discussions similaires

  1. Type défini par l'utilisateur non Défini
    Par jarault dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 29/04/2008, 07h53
  2. Réponses: 2
    Dernier message: 31/07/2007, 15h05
  3. Message erreur Type défini par l'utilisateur non défini
    Par Michel DELAVAL dans le forum Access
    Réponses: 2
    Dernier message: 27/06/2006, 16h37
  4. Trier un tableau de type défini par l'utilisateur
    Par nonaparus dans le forum VB 6 et antérieur
    Réponses: 1
    Dernier message: 24/10/2005, 21h11
  5. Modifier un type défini par l'utilisateur
    Par soazig dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 04/08/2004, 12h47

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