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

MFC Discussion :

Visual C++ Embedded - Chaines de caract�res


Sujet :

MFC

  1. #1
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut Visual C++ Embedded - Chaines de caract�res
    Bonjour,

    Je ne sais si c'est ici que je dois mettre mes messages sur cette techno mais je n'ai pas vraiment trouv� le lieux appropri� ... J esp�re donc que qqn pourra d�placer mon message s'il le faut.

    Voil�, j ai un programme qu il faut que je passe de VC++ � eVC++.
    Mais j ai un souci car eVC ne reconnait pas certaines biblioth�ques classiques de VC++. Par exemple � la compile, il me gigle d�s que j'utilise :
    - AppendChar
    - Trim

    J'ai des souci aussi avec
    - MakeUpper
    - Format

    Quelqu un serait il o� je pourrai trouver des �quivalents ???

    Merci d avance

  2. #2
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    Personne pour me renseigner ?
    Est ce le forum le mieux adapt� ?

  3. #3
    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
    Par d�faut
    salut,
    essaye d'�tre plus pr�cis ...
    AppendChar connait pas, c'est quoi une m�thode quelle classe ? une fonction ?
    Trim pareil ...
    J'ai des souci aussi avec
    - MakeUpper
    - Format
    ne nous renseigne pas vraiment sur le probl�me...
    il ne faut pas s'�tonner si personne ne se donne la peine de r�pondre..

  4. #4
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    D�sol�e .. .

    Bon en fait les m�thodes �nonc�es ci-dessus sont des m�thodes de la classe CString.
    Sous VC++ ou eVC++, j'ai un code du genre :
    strTmp2.Format("%d",VDE_);
    Avec strTmp2 de type CString
    VDE_ un int.

    Mais sous eVC++ il me sort l'erreur suivante :
    cdecl CString::Format(const unsigned short *,...)' : cannot convert parameter 1 from 'char [3]' to 'const unsigned short *'

    Pourtant quand je tape la ligne, l'aide contextuelle me donne bien les m�me types d'arguments pour la fonction que l'on soit sur eVC++ ou VC++.
    Je ne comprends pas pourquoi cette erreur ...

  5. #5
    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
    Par d�faut
    sous evc tu es en Unicode de base ,tu dois donc utiliser la macro appropri�e (_T("")) pour sp�cifier les chaines de caract�res...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    strTmp2.Format(_T("%d"),VDE_);

  6. #6
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    Bon alors je m'en suis sortie avec Format ...
    En fait sous eVC++, il faut mettre des simple quote au lieux des doubles ... Et �a passe (tout du moins � la compil j ai plus d erreur !).
    J'ai vu ton message apr�s FarScape ... Effectivement ta m�thode fonctionne. Merci beaucoup

    Par contre, j'ai toujours un souci avec strCmp. Enfin avec les param�tres que j'ai dans cette fonction. En effet, strcmp est d�fini ainsi :
    int __cdecl strcmp(const char *, const char *);
    Or dans mon code en VC++, mon second param�tre qui est un CString ne pause pas de pb lors de la compilation malgr� la d�finition alors qu en eVC j'ai une erreur :
    error C2664: 'strcmp' : cannot convert parameter 2 from 'class CString' to 'const char *'
    Merci d avance

  7. #7
    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
    Par d�faut
    je crois que tu n'as pas compris ce que j'ai dis ....
    Bon alors je m'en suis sortie avec Format ...
    En fait sous eVC++, il faut mettre des simple quote au lieux des doubles ... Et �a passe (tout du moins � la compil j ai plus d erreur !).
    ce que tu dis est faux !
    comme je le r�p�te (trop) souvent ces derniers temps : ce n'est pas parce que �a compile que �a va fonctionner !
    tu es en UNICODE oublie char * .
    utilise les macros appropri�es sinon c'est le mur assur�..
    http://msdn2.microsoft.com/en-us/library/c426s321(vs.71).aspx

    alors je modifie mon message ,�vite d'utiliser les fonctions C de la CRT (stncmp et compagnie) ,privil�gie l'objet CString (�a t'�viteras bien des probl�mes) sinon il va falloir que tu utilises les versions UNICODE de ces fonctions.
    consulte MSDN.

  8. #8
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    Je suis vraiment d�sol�e ...
    En fait �a fait super super longtemps (et j'en ai tr�s peu fait) que je n ai pas fait de C++ et je n ai jamais fait de eVC++ ... Donc perso, je l'avoue je suis compl�tement � la ramasse !
    Le truc c est que l� je me retrouve � devoir faire un mix de deux codes sources que je ne maitrise pas du tout avec deux techno que je ne maitrise pas du tout donc pour le moment j etais d�j� bien contente que �a compile ...
    Par contre, vu ton message (pas le dernier mais le pr�c�dent), j ai chang� bien �videmment le code pour prendre en compte tes conseils et faire en sorte qu'en plus de compiler �a marche.

    Je sais je suis un peu un boulet sur ce coup l� mais apr�s des jours de gal�re j'ai qd mm pr�f�r� me tourner vers le forum quitte � passer pour une idiote que de rester coinc�e ...

    Sorry et merci de ton aide

  9. #9
    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
    Par d�faut
    tu as int�r�t de faire le point sur ce que tu utilises sinon tu vas gal�rer....
    tu dois prendre le temps:
    -de te renseigner sur l'Unicode cf liens dernier post.
    -faire des recherches sur le forum sur ce mot clef.

    si tu veux �viter les probl�mes privil�gie l'objet plut�t que les fonctions C ...
    suivant la nature du code �a demandera une refonte compl�te.

  10. #10
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    Je vais faire les recherches que tu me conseilles ...
    Mais le hic c est que la refonte du code que tu me sugg�re est impossible. En fait cette partie de code fait partie d'un projet de grande envergure qu'il est impossible de refaire. Etant donn� que j'utilise du coup des choses existantes, je ne peux tout balayer sans laisser des mois et des mois de travail sur mon passage ce qui n est pas le but.

    Je sais que dans l'id�al c'est ce qu il faudrait faire mais chacun sait (et toi le premier je pr�sume) que dans l'informatique, comme dans beaucoup de domaines, les projets �voluent tellement au jour le jour qu'on est souvent loin du code optimal et que pour des raisons de co�t y a peu de chance que l'on reprenne tous les projets !

    Du coup, j'ai pas vraiment le choix que d'utiliser les "char *" mais je ne d�sesp�re pas ... M�me si le fais que tu me pr�dises un avenir de gal�re ne m'enchante gu�re !

  11. #11
    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
    Par d�faut
    les gens autour de toi ont conscience qu'adapter du code qui n'a pas tenu compte de l'UNICODE d�s le d�part est un travail monstre ?
    car tu vas devoir traquer tous les char pour les remplacer par des _TCHAR (mode g�n�rique qui depend du mode de compilation) .
    ainsi que toutes les fonctions C qui travaillent sur des char * pour les remplacer par les versions unicode...
    les const char * par des LPCTSTR etc ..., voir MSDN

  12. #12
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    Je ne sais pas s ils en ont vraiment conscience mais ils le d�couvriront vite ...
    Je vais essayer de m en sortir comme �a en les mettant en garde ...

    Dis moi, je suis en train de tenter de convertir un CString en "const char *". C'est pas (LPCTSTR) que je dois utiliser ?
    Parce que qd j'ecris cela :
    CString Temp = _id_ADS+strTmp;
    const char* tt = (LPCTSTR)Temp;
    J ai droit � une erreur
    'initializing' : cannot convert from 'const unsigned short *' to 'const char *'

  13. #13
    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
    Par d�faut
    lis la note MSDN que j'ai cit� ..., oubli char ,char * !
    Citation Envoy� par MSDN
    • TCHAR Where you would use char.
    • LPTSTR Where you would use char*.
    • LPCTSTR Where you would use const char*. CString provides the operator LPCTSTR to convert between CString and LPCTSTR.

  14. #14
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    C est justement l� dessus que je m etais bass�e pour faire mon code .. J ai pas du tout saisir ...
    je pensais qu une fois "transform�" en LPCTSTR je pourrai utiliser ma "fameuse" fonction strcmp.

  15. #15
    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
    Par d�faut

    Citation Envoy� par farscape
    alors je modifie mon message ,�vite d'utiliser les fonctions C de la CRT (strncmp ,strcmp et compagnie) ,privil�gie l'objet CString (�a t'�viteras bien des probl�mes) sinon il va falloir que tu utilises les versions UNICODE de ces fonctions.
    consulte MSDN.
    je pensais avoir �t� clair la dessus

  16. #16
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    Oui tu as �t� clair mais comme dans d autres parties du code ceci y est deja je restait qd m�me sur mon id�e ... Et oui des fois qd on a de mauvaises id�es en t�te !! Et puis vu que tu m as dit que je devrais tout changer ... J �tais moyen motiv�e !!

    Il vaut donc mieux que je remplace �a :
    if (strcmp(status.serial_number,tt )) throw CErreur_ICE ( CConstantes::CAUSE_ERREUR_NUMERO_SERIE , cr , classe+":"+methode,"Num S�rie incorrect, NUM_LU=["+CString(status.serial_number).Left(12)+"] NUM_ATTENDU=["+_id_ADS+"]" );
    Par :
    CString Temp = _id_ADS+strTmp;
    LPCTSTR tt = (LPCTSTR)status.serial_number;
    if (Temp.Compare(tt)) throw CErreur_ICE ( CConstantes::CAUSE_ERREUR_NUMERO_SERIE , cr , classe+":"+methode,"Num S�rie incorrect, NUM_LU=["+CString(status.serial_number).Left(12)+"] NUM_ATTENDU=["+_id_ADS+"]" );

  17. #17
    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
    Par d�faut
    si status.serial_number est une CString tu peux les comparer directement...
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
     
    if (Temp==status.serial_number)
    apr�s il faut voir de ce que tu fais de ton message dans ton exception.
    parce que la il est d�finit comme une chaine de caract�res, pas comme une chaine Unicode ,et comme il y a des CString au milieu �a ne devrait pas passer � la compilation...
    il faut penser UNICODE.

  18. #18
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    Oui mais pourquoi faire simple quand on peut faire compliqu�

    Par contre status.serial_number n'est pas une CString ... Je peux faire une comparaison directe entre CString et LPCTSTR ?

    Merci de ta patience en tout cas

  19. #19
    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
    Par d�faut
    Citation Envoy� par Mil17
    Oui mais pourquoi faire simple quand on peut faire compliqu�

    Par contre status.serial_number n'est pas une CString ... Je peux faire une comparaison directe entre CString et LPCTSTR ?

    Merci de ta patience en tout cas
    il ne devrait pas y avoir de probl�me si c'est vraiment de l'unicode ...

  20. #20
    Membre confirm�
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    120
    D�tails du profil
    Informations personnelles :
    Localisation : France, Is�re (Rh�ne Alpes)

    Informations forums :
    Inscription : Avril 2007
    Messages : 120
    Par d�faut
    Oui �a semble marcher merci ...
    J ai une question subsidiaire ... En fait dans le code que je reprends ils utilisent la fonction "strtol".
    J ai bien lu la FAQ � ce sujet, j'ai fait des recherches dans MSDN mais j ai trouv� aucune m�thode li�e aux CString me permettant de faire la m�me chose que "strtol" ... Connais tu un moyen de m en sortir une fois de plus ?

    [Edit] Je viens de trouver la piste _tcstol .... Je creuse.

+ R�pondre � la discussion
Cette discussion est r�solue.
Page 1 sur 2 12 Derni�reDerni�re

Discussions similaires

  1. R�ponses: 6
    Dernier message: 08/12/2010, 19h03
  2. R�ponses: 2
    Dernier message: 08/12/2010, 18h57
  3. R�ponses: 8
    Dernier message: 03/12/2010, 01h32
  4. R�ponses: 4
    Dernier message: 08/09/2006, 09h41
  5. R�ponses: 2
    Dernier message: 06/12/2002, 07h50

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