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++ Discussion :

R�-�criture code VB6 -> C++


Sujet :

C++

  1. #1
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut R�-�criture code VB6 -> C++
    Bonjour,

    Dans le cadre d'un travail, j'ai pour t�che de r�-�crire un programme (cod� en VB6) en C++. Autant le dire tout de suite : je rencontre beaucoup de difficult�s �tant donn� que le programme en question n'est pas document� (il n'y a aucun document d'analyse ou quoi que ce soit, mis � part quelques commentaires par-ci par-l� dans le code).

    Cependant, la compr�hension du code n'est pas encore un trop gros probl�me (�videmment, �'aurait �t� plus facile avec de la documentation). Je dois coder le programme en C++ avec C++ Builder 5 (oui, je vous l'accorde, c'est pas tr�s nouveau tout �a...). J'ai une petite exp�rience du C++ (j'avais d�j� fait pas mal de C et j'avais appris le C++ en autodidacte via des tutoriaux) mais j'ai l'impression qu'avec C++ Builder, tout change ! Ok, la cr�ation de la GUI est grandement simplifi�e, mais �a ne m'a pas l'air fort standard. Moi qui avait l'habitude des string, voil� que j'apprends que C++ Builder utilise des AnsiString (ou String gr�ce au typedef) pour tout ce qui touche aux composants.

    Bref, je suis un peu perdu devant tous les types de donn�es, les conversions � effectuer etc. Dans le programme en question, par exemple, il y a des conversions de Variant en Double etc... Toutes ces choses-l� en C++ ne se font pas aussi ais�ment qu'en VB (ou alors j'ai loup� un chapitre) et encore moins quand on utilise C++ Builder (dois-je utiliser les AnsiString autant que possible, ou bien les string de la STL et convertir uniquement lorsque je dois afficher dans un composant ?).

    En r�sum�, si quelqu'un a d�j� eu � convertir du VB6 (ou VB en g�n�ral) en C++ et qu'il a recontr� les m�me probl�mes que je recontre actuellement, un �claircissement de sa part serait hautement appr�ci�.

    Merci d'avance.

  2. #2
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par d�faut
    Si Variant en VB porte bien son nom, un boost::variant ou boost::any devrait faire l'affaire.

    Pour les AnsiString, ca depend des traitemetn effectu� dessus

  3. #3
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut
    Oui, j'avais pens� � utiliser la librairie boost mais je me suis rendu compte que le type Variant existait en C++ (par contre pour les conversions �a a l'air nettement plus compliqu�).

    Pour les cha�nes de caract�res, disons que la plupart du temps, je dois effectuer des traitements dessus (en VB c'est des mid, left, instr etc.) sans les afficher dans des composants de la GUI. J'essaie donc d'utiliser au plus le type string de la STL. J'aurais juste aim� savoir ce qui, d'apr�s vous, pourrait me simplifier la vie en vue de la conversion VB -> C++ (� quelque niveau que ce soit).

  4. #4
    Membre Expert
    Avatar de Joel F
    Homme Profil pro
    Chercheur en informatique
    Inscrit en
    Septembre 2002
    Messages
    918
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 45
    Localisation : France, Essonne (�le de France)

    Informations professionnelles :
    Activit� : Chercheur en informatique
    Secteur : Service public

    Informations forums :
    Inscription : Septembre 2002
    Messages : 918
    Par d�faut
    Citation Envoy� par Tenebrous Voir le message
    Oui, j'avais pens� � utiliser la librairie boost mais je me suis rendu compte que le type Variant existait en C++ (par contre pour les conversions �a a l'air nettement plus compliqu�).
    Je ne pense pas non

    Citation Envoy� par Tenebrous Voir le message
    Pour les cha�nes de caract�res, disons que la plupart du temps, je dois effectuer des traitements dessus (en VB c'est des mid, left, instr etc.) sans les afficher dans des composants de la GUI. J'essaie donc d'utiliser au plus le type string de la STL. J'aurais juste aim� savoir ce qui, d'apr�s vous, pourrait me simplifier la vie en vue de la conversion VB -> C++ (� quelque niveau que ce soit).
    Alors Oui c'ets le mieux.

  5. #5
    Membre chevronn� Avatar de themadmax
    Profil pro
    Inscrit en
    Juillet 2005
    Messages
    446
    D�tails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2005
    Messages : 446
    Par d�faut
    Pourquoi dois tu effectuer cette conversion ? Besoin de performance, obsolescence, interfa�age...
    Pourquoi repartir sur du C++ Builder que me parait lui aussi en fin de vie...
    Sinon utilise le plus possible les standards, les std::string � la place des AnsiString. Pour ce qui est tu type Variant, la plupart dur temps tu peux les replacer par des d�clarations explicites et un peu d'h�ritage.

  6. #6
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut
    Principalement pour un gain de performance, en effet.
    Cependant, mon travail ne se limite pas � une simple traduction de code, je dois �galement revoir certains algorithmes utilis�s et les optimiser pour un gain encore plus important.

    En ce qui concerne C++ Builder, il m'est malheureusement impos�, je n'ai pas le choix...

    Sinon, j'aurais une autre question :
    J'aimerais conna�tre l'�quivalent des fonctions GetSetting et SaveSetting de VB en C++. Si cela n'existe pas, y a-t-il une alternative ?
    J'ai effectu� pas mal de recherches sur Internet; sans grand succ�s (la documentation est tr�s peu pr�sente ou bien pas vraiment d�taill�e).

    Merci d'avance.

  7. #7
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par d�faut
    Citation Envoy� par Tenebrous Voir le message
    J'aimerais conna�tre l'�quivalent des fonctions GetSetting et SaveSetting de VB en C++. Si cela n'existe pas, y a-t-il une alternative ?
    J'ai effectu� pas mal de recherches sur Internet; sans grand succ�s (la documentation est tr�s peu pr�sente ou bien pas vraiment d�taill�e).
    C'est simplement que tu ne sais pas encore comment chercher, quels sont les bons mots cl�s � utiliser.
    En l'occurrence, tu veux un moyen de lire dans le registre puisque c'est ce que fait GetSetting. Donc : Google("msdn registry api") > MSDN - Registry (1er lien) > Registry reference > Registry functions > RegGetValue

  8. #8
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut
    Ok, merci pour l'info.
    Par contre, au risque de para�tre un peu "emmerdant", y'a pas quelque chose de plus simple que �a ? Pour leurs homologues VB, 4 param�tres � passer et le tour �tait jou�. Ici, quand je regarde les fonctions, c'est... comment dire... un peu compliqu� pour ce que je veux faire.

  9. #9
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par d�faut
    Ah ! �a, c'est une des petites "joies" du C++, presque tout sera toujours plus compliqu� qu'avec dotnet. Les API win32 sont fa�tes pour la compatibilit� C (donc pas d'objet, sauf API COM) et assez bas niveau pour couvrir tous les sc�narios, m�me si quelques fonctions de plus haut niveau pour les t�ches auraient �t� bienvenues.

    Donc, non, il n'existe � ma connaissance rien de plus haut niveau, ou alors il faut aller chercher sur le web des biblios tierce-parties (ou peut-�tre C++ builder a t-il quelque chose pour �a, c'est un peu son but apr�s tout). De toute fa�on, en C++ tout sera toujours plus long et la productivit� en prend un coup, � quelques exceptions pr�s. Parmi celles-ci, par exemple, �crire du code tr�s performant est beaucoup plus simple et rapide en C/C++.

  10. #10
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut
    Ok, merci pour les infos en tout cas.
    Si ce n'est pas trop demander, quelqu'un pourrait-il me fournir un petit exemple utilisant ces fonctions ? Simplement la sauvegarde d'un param�tre dans le registre et le r�cup�ration de ce dernier (je n'ai pas besoin de plus).


    EDIT : J'ai trouv� �a sinon :
    http://www.developer.com/net/cplus/article.php/3449721
    Ca m'a l'air plus simple � utiliser. Un avis ?

  11. #11
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par d�faut
    L'article que tu mentionnes est r�serv� au managed c++, une version sp�cifique du C++ d�di�e � dotnet (et aujourd'hui remplac�e par MS par C++/CLI, seule la syntaxe changeant un peu) dans laquelle tu as acc�s � toute l'API du framework dotnet, comme en VB ou C#.

    Non seulement je doute que C++ builder supporte le managed C++ ou le C++/CLI mais cela voudrait aussi dire que ta biblio ne serait accessible qu'aux programmes dotnet, ce qui est sans doute justement ce que l'on veut �viter en te faisant r�aliser ce portage.

  12. #12
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut
    Encore une fois, merci pour tes conseils �clair�s.
    J'ai finalement fini par trouver ce que je cherchais, � savoir comment manipuler le registre avec C++ Builder (tu avais raison, il int�gre une classe TRegistry qui simplifie grandement son utilisation).

    Cependant, d'apr�s ce que j'ai lu dans mes recherches, il me semble que je pourrais remplacer l'utilisation du registre par un simple fichier de configuration (.ini). L� encore, C++ Builder met � la disposition une classe TIniFile pour permettre la manipulation de ces fichiers.

    La question que je me pose est : quels avantages y a-t-il � utiliser un .ini par rapport au registre ? Les deux solutions sont-elles �quivalentes ?

    Merci d'avance.

  13. #13
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par d�faut
    Sur la question de la base de registres contre les fichiers de configuration (plut�t XML de nos jours m�me si un vieux .INI fait l'affaire), ces derniers l'emportent presque toujours : ils sont plus simples � d�ployer, supprimer et g�rer, l'utilisateur peut au besoin ais�ment et manuellement les �diter (programme qui crashe au d�marrage, param�tres cach�s sans UI pour les g�rer) ou les copier (en cas de migration vers un autre ordinateur l'id�al est d'avoir simplement � copier le dossier utilisateur), c'est une solution portable vers d'autres OS, on trouve de nombreuses API puissantes pour manipuler les XML, etc

    Le seul cas o� la base de registre pr�sente un avantage c'est dans l'administration de plusieurs comptes utilisateurs : l'administrateur peut d�finir des cl�s globales qui seront automatiquement h�rit�es dans le cas o� il n'y aurait pas de cl� sp�cifique � l'utilisateur. Accessoirement elle peut aussi �tre lue et modifi�e trivialement par plusieurs threads et processus simultan�s m�me si je me demande s'il existe une API pour g�rer �a finement (transactions ou verrous).

    Enfin, dans les deux cas, respecte les usages pr�n�s par MS depuis Vista et Seven : fichiers de config dans les dossiers AppData (et non dans le dossier programme) dans un cas, ne pas s'appuyer la virtualisation de certaines op�rations de la base de registres dans l'autre cas (le syst�me introduit depuis Vista pour g�rer les acc�s aux cl�s globales du registre par un utilisateur aux droits restreints).

  14. #14
    Membre confirm�
    Homme Profil pro
    Inscrit en
    Septembre 2009
    Messages
    65
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 34
    Localisation : Belgique

    Informations forums :
    Inscription : Septembre 2009
    Messages : 65
    Par d�faut
    Eh bien, tu es une encyclop�die vivante dis-moi !
    Merci pour les renseignements (j'ai l'impression de me r�p�ter ^^).

    Je laisse cette discussion ouverte car j'aurai sans doute encore des questions � poser par la suite, au fur et � mesure de mon avancement dans le projet.

  15. #15
    Membre Expert Avatar de DonQuiche
    Inscrit en
    Septembre 2010
    Messages
    2 741
    D�tails du profil
    Informations forums :
    Inscription : Septembre 2010
    Messages : 2 741
    Par d�faut
    Citation Envoy� par Tenebrous Voir le message
    Eh bien, tu es une encyclop�die vivante dis-moi !
    H�las, non. Mais la force de l'exp�rience appara�t tout de m�me.
    Content d'avoir pu t'aider.

  16. #16
    Membre Expert
    Homme Profil pro
    Inscrit en
    D�cembre 2010
    Messages
    734
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : D�cembre 2010
    Messages : 734
    Par d�faut
    Citation Envoy� par Tenebrous Voir le message
    Je laisse cette discussion ouverte car j'aurai sans doute encore des questions � poser par la suite, au fur et � mesure de mon avancement dans le projet.
    Sans vouloir jouer les rabat-joie, je te conseille plut�t un thread par probl�me car ce sera plus visible et compr�hensible , d'o� plus de possibilit�s de r�ponse.
    bon courage

+ R�pondre � la discussion
Cette discussion est r�solue.

Discussions similaires

  1. probleme avec requete SQL dans code VB6
    Par captainamerica75 dans le forum VB 6 et ant�rieur
    R�ponses: 4
    Dernier message: 30/05/2007, 21h36
  2. R�ponses: 2
    Dernier message: 08/11/2006, 20h57
  3. Tracage de code VB6
    Par seb500 dans le forum VB 6 et ant�rieur
    R�ponses: 2
    Dernier message: 23/10/2006, 09h52
  4. Code VB6 � adapter pour VB4
    Par Whombat dans le forum VB 6 et ant�rieur
    R�ponses: 1
    Dernier message: 10/03/2006, 10h50
  5. Code VB6 vers Delphi ?
    Par isachat666 dans le forum Langage
    R�ponses: 4
    Dernier message: 11/01/2006, 15h07

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