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

des r�sultats de methode incoh�rents


Sujet :

C++/CLI

  1. #1
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut des r�sultats de methode incoh�rents
    Bonjour,
    J'ai un r�sultat de la m�thode find qui me correspond pas � mon attente.
    J'ai le code :
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    		mpos = wsChunk.find( L"or +APC or ");
    		pos = wsChunk.find( L"+APC or ");
    et avec la donn�e wsChunk = {"+APC or "}
    je r�cup�re mpos = 0 et pos = 0
    J'attedais mpos = -1 et pos = 0
    et avec le code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    		mpos = wsChunk.find( L"OFF or +APC or ");
    		pos = wsChunk.find( L"+APC or ");
    avec la donn�e wsChunk = {", either OFF or +APC or +DEM "}
    J'attendais mpos = 10 et j'obtiens mpos = -1
    qui m'aidera sera :ccool;

  2. #2
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    wsChunk est une std::wstring?
    Je suppose que le contenu que tu indiques est ce que te donne le debugger pile sur la ligne de l'appel � find()?
    Le code n'est pas multi-thread�, au moins?

    PS: Dans le second cas, mpos devrait �tre 9, pas 10.
    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.

  3. #3
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut Je na sais pas
    Je na sais pas si le code est multi thread� Je pense que oui pour les affichage mais pas pour le code
    wsChunk est bien une std::wstring
    c'est bien ce que donne le d�boguer sur la ligne

  4. #4
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    V�rifie la longueur indiqu�e pour la cha�ne, des fois qu'il y ait un caract�re invisible (d'un autre c�t�, �a n'explique pas le premier r�sultat...).
    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.

  5. #5
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Autre chose: S'agit-il de cha�nes sur lesquelles tu obtiens, � un moment ou un autre, un pointeur non-const?
    Car si oui, "all bets are off" et je ne r�ponds plus de rien.
    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.

  6. #6
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut
    J'ai des comportement plus pr�cis:
    quand je passe sur mpos j'ai la valeur mpos = -1
    quand je passe sur pos j'ai la valeur pos = 16 et mpos = 16
    comment se fait il que le resultat de pos se reporte sur la valeur de mpos
    j'ai essay� d'inverser les instructions
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    		pos = wsChunk.find( L"+APC or ");
    		mpos = wsChunk.find( L"or +APC or ");
    a l'entr�e pos et mpos ont la valeur -1
    quand je passe sur pos j'ai pos = 16 ce qui est coh�rent
    quant je passe sur mpos j'ai mpos = 16 pou 13 attendu
    avec la valeur wsChunk = {", either OFF or +APC or +DEM "}

  7. #7
    Expert confirm�
    Homme Profil pro
    Analyste/ Programmeur
    Inscrit en
    Juillet 2013
    Messages
    4 772
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rh�ne (Provence Alpes C�te d'Azur)

    Informations professionnelles :
    Activit� : Analyste/ Programmeur

    Informations forums :
    Inscription : Juillet 2013
    Messages : 4 772
    Par d�faut


    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
    #include <string>
     
    #include <stdio.h>
     
     
    using std::wstring;
     
     
    int main(int argc, char** argv)
    {
        std::wstring wsChunk = L", either OFF or +APC or +DEM ";
     
        std::wstring::size_type pos = wsChunk.find( L"+APC or ");
        std::wstring::size_type mpos = wsChunk.find( L"or +APC or ");
     
        printf("%d, %d\n", pos, mpos); // 16, 13
     
        wsChunk = L"+APC or ";
     
        pos = wsChunk.find( L"+APC or ");
        mpos = wsChunk.find( L"or +APC or ");
     
     
        printf("%d, %d\n", pos, mpos); // 0, -1
     
        if (mpos == std::wstring::npos) {
            printf("No found: \"or +APC or \"\n");
        }
     
        wsChunk = L", either OFF or +APC or +DEM ";
     
        pos = wsChunk.find( L"+APC or ");
        mpos = wsChunk.find( L"OFF or +APC or ");
     
        printf("%d, %d\n", pos, mpos); // 16, 9
     
        return 0;
    }

  8. #8
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut La solution
    J'ai remplac� mpos par npos, et tout est rentr� dans l'ordre

  9. #9
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Mais npos est une constante valant ((size_t)-1)!
    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.

  10. #10
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut Je vous donne
    Je vous donne les d�clarations:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
       int										pos;
       int										npos;
       int										mpos;

  11. #11
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Apparemment, j'ai confondu avec string::npos. Mais n�anmoins, je d�conseillerais d'utiliser ce nom de variable, ne serait-ce que pour �viter d'autres confusions.
    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.

  12. #12
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut Ok
    Je vais le faire.
    Je l'ai fait
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
       int										Step;
       int										pos;
       int										pos1;
       int										pos2;

  13. #13
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut Je reviens et je d�taille la soulution
    J'ai du �tendre l'interface pour prendre en compte le besoin:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    		pos = wsChunk.find( L"+APC or ");
    		pos1 = wsChunk.find( L"or +APC or ");
    		pos2 = wsChunk.find( L"door");
    avec cette impl�mentation j'ai pos = 16 et pos2 = 16 ce qui est incoh�rent
    j'ai donc modifi� les variables por tourner ce probl�me
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    		pos = wsChunk.find( L"+APC or ");
    		pos1 = wsChunk.find( L"or +APC or ");
    		pos4 = wsChunk.find( L"door");
    ce qui semble marcher.

  14. #14
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut il y a une autre incoh�rence qui r�siste
    Bonjour
    il y a une autre incoh�rence qui r�siste
    je vous met le code
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    				wsNewWord = (wchar_t*)pWord->wsWord.c_str();
    				b3 = wcscmp( wsNewWord, L"or");
    avec les valeurs suivantes :
    pWord->wsWord = {"closure"}
    wsNewWord = 0x07CABBC8 "closure"
    b3 = true ce qui est incoh�rent
    J'ai essay� avec b5: m�me r�sultat

  15. #15
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    1. QU'EST-CE QUE C'EST QUE CE CAST EN POINTEUR NON-const!!
    2. wcscmp() n'est pas String::Equals. Cette fonction ne retourne pas true ou false, mais une valeur pouvant �tre positive, n�gative ou nulle.
    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.

  16. #16
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut On converge
    merci Medinoc
    je met le code qui marche mieux
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    8
    				wchar_t* wsNewWord = (wchar_t*)pWord->wsWord.c_str();
    				pos5 = wcscmp( wsNewWord, L",");
    				b1 = pWord->POS == POS_STOPMARK;
    				wsNewWord = (wchar_t*)pWord->wsWord.c_str();
    				pos3 = wcscmp( wsNewWord, L"or");
    				if( pos5 != -1)
    					bVirgulePosee = true;
    				if( pos5 != -1 || b1 || pos3 != -1)
    dans la phrase wsProposition {"The Ignition Subsystem Ignition Key or PASE has 3 states , either OFF or +APC or +DEM . "}
    mais avec la valeur wsNewWord = 0x07B196D0 "PASE"
    je r�cup�re pos5 = 1 ce qui est incoh�rent

  17. #17
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    cf. mon post plus haut.

    Je ne r�pondrai plus aux autres erreurs tant que je verrai ce genre de cast.
    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.

  18. #18
    Membre extr�mement actif
    Profil pro
    D�veloppeur informatique
    Inscrit en
    D�cembre 2008
    Messages
    1 022
    D�tails du profil
    Informations personnelles :
    Localisation : France, Mayenne (Pays de la Loire)

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

    Informations forums :
    Inscription : D�cembre 2008
    Messages : 1 022
    Par d�faut La Solution que j'ai fait
    bonjour,
    J'ai mis un bool initialis� quand il le faut pour doubler la solution:
    Code : S�lectionner tout - Visualiser dans une fen�tre � part
    1
    2
    3
    4
    5
    6
    7
    				wsNewWord = (wchar_t*)pWord->wsWord.c_str();
    				b1 = pWord->POS == POS_STOPMARK;
    				wsNewWord = (wchar_t*)pWord->wsWord.c_str();
    				pos6 = wcscmp( wsNewWord, L",");
    				b0 = ( pos6 != -1 && bWisComma == true);
    				pos3 = wcscmp( wsNewWord, L"or");
    				b2 = ( pos3 != -1 && bWisPivot == true);

  19. #19
    Expert �minent
    Avatar de M�dinoc
    Homme Profil pro
    D�veloppeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 397
    D�tails du profil
    Informations personnelles :
    Sexe : Homme
    �ge : 41
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 397
    Par d�faut
    Ce code contient toujours des erreurs (ne serait-ce que des erreurs s�mantiques) mais... voir plus haut.

    C'est comme Experts Exchange, il faut payer pour avoir la r�ponse compl�te... :p
    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.

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

Discussions similaires

  1. remplir une table en fonction des r�sultats
    Par Psychomantis dans le forum SQL Proc�dural
    R�ponses: 5
    Dernier message: 19/10/2004, 12h22
  2. DBCC SQLPERF ( LOGSPACE ) Interpr�tation des r�sultats
    Par Labienus dans le forum MS SQL Server
    R�ponses: 4
    Dernier message: 20/07/2004, 15h50
  3. Grouper et concatener des r�sultats
    Par Koo dans le forum Langage SQL
    R�ponses: 3
    Dernier message: 07/07/2004, 10h09
  4. Select, union, �liminer des r�sultats.
    Par franculo_caoulene dans le forum MS SQL Server
    R�ponses: 4
    Dernier message: 10/06/2004, 09h42
  5. R�ponses: 3
    Dernier message: 18/05/2003, 00h16

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