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

  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 049
    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 049
    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 049
    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 049
    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

  7. #7
    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
    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 ?
    Et non, seul de chez tout seul !!!

    J'ai contacté Embarcadero au cas ou il y aurait une formation sur la Belgique, mais pour l'instant pas de nouvelle.

    Pour le .PCX, j'ai vu. J'avais déjà eu le problème avec VBA qui ne supporte plus le format PCX depuis quelques temps (j'ai du convertir les objets PCX que j'utilise en .JPG avant utilisation dans mon code VBA via l'appel de Irfanview /Convert). Le PCX n'est quasi plus supporté mais tous mes plans sont dans ce format (des dizaines de milleirs). Je dois convertir tout cela mais synchroniser mes codes (C++ entre autres, amis aussi codes natif I5 (RPGIV)) en même temps.

    D'où ma démarche vers le C++Builder actuelle.

    Si je devient capable de faire ma convertion PCX en JPEG en C+Builder comme je sais le faire en vba, je pourrai utiliser si j'ai bien compris les contrôle Timages standards qui supportent le Jpeg.

    Mais, je suis encore trèèèèèèèèèèès loin de cela. Je lis partout, et plus je lis, .... plus je ... déconnecte.

    Je cherche qq exemples de programmes qui affichent des images dans un contrôle, qui appellent un autre programme, ... en C++Builder bien sûr, mais je n'ai pas encore trouvé.

    Sur base de cela je comprendrai mieux.

    Encore merci pour tes réponses et ton temps.

  8. #8
    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
    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 !
    Idée folle qui me passe par la tête : Vu que je connais pas mal le VBA et le Visual RPG (qqpart similaires), tant qu'à plonger dans l'inconnu, je vais tenter d'utiliser Delphi qui me semble plus aisé à lire, écrire et comprendre.

    J'essaie un simple programme pour afficher mon image (.PCX) et si nécessaire avec conversion du pcx en Jpg d'abord.

  9. #9
    Membre éprouvé
    Profil pro
    Inscrit en
    Novembre 2004
    Messages
    2 766
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2004
    Messages : 2 766
    Par défaut
    Je trouve ça ballot (voire stupide) d'investir du temps et donc de l'argent dans cette migration vers une techno moribonde (C++Builder).

    Je ne sais pas combien tu es payé, mais je te propose une nouvelle fois de suggérer à ton boss de payer une boîte de service pour migrer tout ça vers .Net. À moyen terme, ça sera sans doute bien plus rentable.

  10. #10
    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
    Citation Envoyé par oodini Voir le message
    Je trouve ça ballot (voire stupide) d'investir du temps et donc de l'argent dans cette migration vers une techno moribonde (C++Builder).

    Je ne sais pas combien tu es payé, mais je te propose une nouvelle fois de suggérer à ton boss de payer une boîte de service pour migrer tout ça vers .Net. À moyen terme, ça sera sans doute bien plus rentable.
    Salut oodini, je ne suis que partiellement d'accord avec toi.
    Sur le principe je te suis entièrement, mais la réalité industrielle est parfois loin du monde actuel en ce qui concerne les développements. Il n'est pas rare de fonctionner avec du code écrit il y a parfois plusieurs décades, car assez fiable et peu soumis à des besoins de maintenance. Le fait de suivre la technologie dans ces dernières évolutions alors que le code global de l'entreprise dépasse de loin plusieurs centaines de milliers de lignes de code n'est guère réalisable, et même totalement ingérable.

    Dans le cas qui nous concerne, en se limitant à un investissement software de moins de 1000 Eur, si on fait fi d'une formation que de toute manière je n'arrive pas à organiser, on s'en tire qqpart à bon compte.

    Comment je suis payé : à faire tout à la fois, y compris le développement, étant le seul informaticien (mohican plutôt) encore en place.

    Cela a au moins l'avantage d'élargir mon horizon de connaissances à qqchose que je ne connaissais pas du tout.

    Je me suis déjà lancé, et c'est vrai, le résultat est encore très douteux mais j'avance.

    Oui, au départ de 0, avec pas de contraintes, j'aurais choisi une toute autre solution.
    Mais faire avec les contraintes techniques fait aussi partie de mes responsabilités.

    J'ai passé 3 jours a regarder partout (Y compris Delphi, .Net, Visual C++, ..), et crois moi bien, si je veux éviter de tourner cinglé et avancer, car c'est ce qu'on attend de moi, et bien je confirme que C++Builder est le moins mauvais choix à court et moyen terme.
    Le forum C++Builder est bien fréquenté et je suis ravi du support qui m'est donné.

    Merci pour ton avis. Je le trouve très intelligent mais malheureusement hors de ma portée.

    Bonne soirée.

  11. #11
    Membre Expert
    Avatar de DjmSoftware
    Homme Profil pro
    Responsable de compte
    Inscrit en
    Mars 2002
    Messages
    1 044
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Responsable de compte
    Secteur : High Tech - Opérateur de télécommunications

    Informations forums :
    Inscription : Mars 2002
    Messages : 1 044
    Billets dans le blog
    1
    Par défaut
    Salut

    DFM = Delphi Form
    DPK = Delphi Package
    BPK = C++ Builder Package
    Si tu ne trouve pas le fichier BPK, tu n'est pas en mesure de générer a nouveau le composant, essaye alors de mettre la main sur le fichier .lib du composant
    une simple manipulation avec l'outil en ligne de commande TLIB te permettre d'extraire le fichier .obj compilé

    ex :
    Tlib <composant.lib> *objtoextract.obj

    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)
    si ton but est de de transformer une châine de caractère en sa représentation numérique utilise plutôt les objects de la VCL

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    int i= StrToInt(Edit1->Text);
    un peu de courage car c'est toujours les mêmes méthodes qui posent problème, quand tu a trouvé la solution pour une tu les trouvé pour tous


    J'ai passé 3 jours a regarder partout (Y compris Delphi, .Net, Visual C++, ..), et crois moi bien, si je veux éviter de tourner cinglé et avancer, car c'est ce qu'on attend de moi, et bien je confirme que C++Builder est le moins mauvais choix à court et moyen terme.
    Le forum C++Builder est bien fréquenté et je suis ravi du support qui m'est donné.
    C'est également mon avis par ailleurs avec c++ Builder tu peux facilement mélanger du code Pascal avec du code C++ , en plus de toutes les bibliotèques typiquement C++ (Boost, C0x)

    Si la rapidité dans ton application est primordiable alors oublie les codes managés, dans le cas contraire pour ma part je préfère JAVA à C#


    CDLT

    T
    vous trouverez mes tutoriels à l'adresse suivante: http://djmsoftware.developpez.com/
    je vous en souhaite une excellente lecture ...

    A lire : Les règles du forum

  12. #12
    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

+ 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