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

C++Builder Discussion :

Problème conversion Cbuilder 6.0 vers C++Builder XE [Débutant]


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut Problème conversion Cbuilder 6.0 vers C++Builder XE
    Bonjour,

    je débarque en CBuilder (comme en c++) et donc je rame ... un peu.

    J'essaie de mettre à niveau du code développé (pas par moi) en CBuilder 6.0 vers C++Builder XE et je calle à la compile sur la première directive #pragma ci-dessous :

    le début du code de mon .cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    //---------------------------------------------------------------------------
    #include <vcl.h>
    #pragma hdrstop
    #include "stdio.h"
    #include "stdlib.h"
    #include "io.h"
    #include "dir.h"
    #include "VisdrawUnit1.h"
    #include <printers.hpp>
    #include <Clipbrd.hpp>
    #include "VisdrawPasswordDlg.h"
    //---------------------------------------------------------------------------
    #pragma link "MyTimagePcx"
    #pragma resource "*.dfm"
    je ne trouve pas de fichier MyTimagePcx dans le répertoire source mais bien les 2 fichiers suivants :
    MyTimagePcx.h
    MyTimagePcx.dcr

    Voici le contenu du fichier .h
    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
     
    #ifndef MyTimagePcxH
    #define MyTimagePcxH
    //---------------------------------------------------------------------------
    #include <SysUtils.hpp>
    #include <Classes.hpp>
    #include <Controls.hpp>
    #include <ExtCtrls.hpp>
    //---------------------------------------------------------------------------
    class PACKAGE MyTimagePcx : public TImage
    {
    private:
    protected:
    public:
      virtual __fastcall MyTimagePcx(TComponent* AOwner);
      void Display(AnsiString);
    __published:
      __property  Proportional = {default=true};
    };
    //---------------------------------------------------------------------------
    #endif
    Comment puis-je contourner ce problème ? Par un #include du .h ?

    Je trouve déjà cet include dans "VisdrawUnit1.h" auquel il est fait référence dans mon .cpp via la ligne en italique souligné ci-dessus ?

  2. #2
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    J'ai regardé dans l'aide de et j'ai vu que la syntaxe devrait être
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    #pragma resource "*.xdfm"
    au lieu de .dfm.

    Cela ne bloque plus sur le #pragma.

    Je m'occupe des autres problèmes et je marque résolu si ok.

  3. #3
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    Voilà,

    je bloque à la compile sur ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int L=atoi(Edit1->Text.c_str());
    --->[BCC32 Erreur] VisdrawUnit1.cpp(29): E2034 Impossible de convertir 'wchar_t *' en 'const char *'
    --->[BCC32 Erreur] VisdrawUnit1.cpp(29): E2342 Mauvaise correspondance de type dans le paramètre '__s' ('const char *' désiré, 'wchar_t *' obtenu)

    J'ai tenté ceci mais cela ne fonctionne pas
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int L=atoi(const(Edit1->Text.c_str()));
    Et encore ceci.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    	pCB->Assign(MyTimagePcx1->Picture);
    --->[BCC32 Erreur] VisdrawUnit1.cpp(34): E2451 Symbole 'MyTimagePcx1' non défini

    Je n'ai aucune idée de comment et ou je dois définir cet objet.

    D'avance merci.

  4. #4
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    atoi est une fonction C qui utise un char*
    C'est typiquement ce qu'il ne faut pas faire en C++Builder !
    Mieux vaut utiliser au maximum les fonctions RTL\VCL ainsi que les types Delphi, cela garanti une meilleur compatibilité !

    Avant, ce n'était pas problématique, le char = Char = AnsiChar = 1 octet !
    En XE, cela change char reste à 1 Octet mais, le Char = UnicodeChar = 2 Octets !
    String passe de AnsiString à UnicodeString, à ne pas confondre avec std::string

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int L=atoi(Edit1->Text.c_str());
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int L=StrToInt(Edit1->Text);
    Ce n'est pas un cadeau de faire une migration BCB6 vers BSD XE, le char* en VCL devient problématique, il vaut mieux l'éviter si l'on peut !

    C'est un travail long et fastidieux !
    Bon courage !

    Pour MyTimagePcx1, c'est un composant qui devait être posé dans la Form, stockée dans la DFM, probablement, tu as un DPK a installé !
    Tu as du avoir une erreur à l'ouverture de la Form indiquant un problème de classe manquante !
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

  5. #5
    Membre Expert Avatar de Godzestla
    Homme Profil pro
    Chercheur de bonheur
    Inscrit en
    Août 2007
    Messages
    2 395
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 60
    Localisation : Belgique

    Informations professionnelles :
    Activité : Chercheur de bonheur
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2007
    Messages : 2 395
    Par défaut
    Bonjour ShaiLeTroll,

    et merci pour ta réponse.

    Pour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
      int L=StrToInt(Edit1->Text);
    c'est bien noté et rectifié.

    e n'est pas un cadeau de faire une migration BCB6 vers BSD XE, le char* en VCL devient problématique, il vaut mieux l'éviter si l'on peut !
    J'en suis bien conscient, surtout quand on débarque en même temps en c++, mais je n'ai pas d'autre choix.

    Bon courage !
    Il va m'en falloir, assurément. !!
    Pour MyTimagePcx1, c'est un composant qui devait être posé dans la Form, stockée dans la DFM, probablement, tu as un DPK a installé !
    Tu as du avoir une erreur à l'ouverture de la Form indiquant un problème de classe manquante !
    Oui, à la conversion (à l'ouverture) il me dit que le Controle MyTimage1.pcx ne peut être converti et que cela pourrait engenbdre la suppression de contrôle.

    En fait, je n'ai plus le Form dans ma source convertie surlaquelle j'ai déjà apporté pas mal de correction et j'essaie de trouver le moyen de le récupérer sans devoir refaire toutes les modifs.

    Je ne parviens pas encore à trouver les barres d'outils pour ajouter des contrôles (ni un form d'ailleurs), alors c'est plutot la galère.

    Je suis désolé, mais n'étant pas familier avec la nomenclature C++, je ne comprend pas ce que tu veux dire par DFM et DPK (Data Picker ?)

    Je rame donc. Si tu passes par là et que tu as des petites rames de secours, je t'en remercie déjà. !!!

  6. #6
    Expert éminent
    Avatar de ShaiLeTroll
    Homme Profil pro
    Développeur C++\Delphi
    Inscrit en
    Juillet 2006
    Messages
    14 081
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : France, Seine Saint Denis (Île de France)

    Informations professionnelles :
    Activité : Développeur C++\Delphi
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 14 081
    Par défaut
    DFM = Delphi Form
    DPK = Delphi Package

    C++Builder = Delphi for C++ !
    Je ne suis pas non plus familier avec la nomenclature C++ mais je connais bien Delphi, je bosse en C++ depuis 5 mois, c'est intéressant car plein de chose à redécouvrir !

    Tant que tu n'installe pas les paquets !
    C'est des choses qui ne sont pas évidentes pour un débutant, personne ne peut t'aider ?

    "MyTimage1.pcx ne peut être converti", c'est ça le message ?
    Etrange !
    PCX n'est pas pris en compte par défaut par le TImage, TPicture ... regarde la fonction RegisterFileFormat, elle doit être utilisé dans MyTimage1
    Aide via F1 - FAQ - Guide du développeur Delphi devant un problème - Pensez-y !
    Attention Troll Méchant !
    "Quand un homme a faim, mieux vaut lui apprendre à pêcher que de lui donner un poisson" Confucius
    Mieux vaut se taire et paraître idiot, Que l'ouvrir et de le confirmer !
    L'ignorance n'excuse pas la médiocrité !

    L'expérience, c'est le nom que chacun donne à ses erreurs. (Oscar Wilde)
    Il faut avoir le courage de se tromper et d'apprendre de ses erreurs

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 07/08/2008, 08h24
  2. [WD9] Problème de conversion d'un type vers lui-même
    Par le y@m's dans le forum WinDev
    Réponses: 2
    Dernier message: 05/09/2007, 22h39
  3. Problème conversion float vers double
    Par jhenaff dans le forum SQL Procédural
    Réponses: 3
    Dernier message: 27/01/2006, 10h39
  4. [VB.net]problème de conversion de code c# vers VB.net
    Par cladsam dans le forum Windows Forms
    Réponses: 2
    Dernier message: 18/10/2005, 14h07

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