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 :

Problème et AVC : _wfopen_s


Sujet :

C++

  1. #321
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    05/12/2022, 20h55 : avant : 1 image !

    Vous avez quoi comme client Git/Github sur votre machine ?
    Window 10

    (C'est une action que vous avez réussis à faire seul il y a environ 8 mois pour créer you1, donc avec un peu de travail de mémoire, peut-être que vous y arriverez de nouveau seul.)
    Être crevé !!!

    You.sln ! : oui !
    You1.sln ===> plus tard !

    Merci !

  2. #322
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Bonsoir Bacelar,

    Windows = '\n'
    Unix = '\r\n'

    ???

    Merci

  3. #323
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 152
    Points : 12 260
    Points
    12 260
    Par défaut
    Windows = '\n'
    Unix = '\r\n'
    Non, c'est l'inverse.

  4. #324
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Ok (const int Console_Lire_txt3(std::wstring& Textes, int x1, int x2)) :
    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
        int i, j, k;
        std::size_t N;
        std::vector<std::pair <int, int>> P;
        int PP = 0, pp;
     
        N = Textes.length();
        i = 0;
        while (i < N)
        {
            if (Textes[i] == L'\x1b')
            {
                j = k = i;
                j++;
                while (Textes[j] != L'm' || j >= N)
                    j++;
                if (j >= N)
                {
                    E.afficher_X(-1, L"::Console_Lire_txt()", L"j >= N !!!");
                    return EXIT_FAILURE;
                }
                P.push_back(make_pair(k, (j - k)));
                PP++;
            }
            i++;
        }
        if (PP != 0)
            pp = 0;
    ...
    Mais, pourquoi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::pair<int, int>> iterator iter;
    Erreur !!!
    ???

    Merci beaucoup

  5. #325
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::pair<int, int>>::iterator iter;
    Il manquait le deuxième double-deux-points.

  6. #326
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Bonsoir,

    Il manquait le deuxième double-deux-points.
    Merci beaucoup

  7. #327
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Bonsoir,

    Voilà, mais pas bien !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
                color.push_back(make_pair(L"\x1b[38;2;0;0;255m", L"\x1b[38;2;255;255;255m"));
                color.push_back(make_pair(L"\x1b[38;2;0;255;0m", L"\x1b[38;2;255;255;255m"));
                std::wstring wstr = color[0].first + L"Avatar" + color[0].second + L"\n";
                wstr += L"2" + color[1].first + L"h" + color[1].second + L" 42" + color[1].first + L"min" + color[1].second + L"\n";
                wstr += L"Malgré sa paralysie, Jake Sully, un ancien marine immobilisé dans un fauteuil roulant, est resté un combattant au plus profond de son être.Il est recruté pour se rendre à des années - lumière de la Terre, sur Pandora, où de puissants groupes industriels exploitent un minerai rarissime destiné à résoudre la crise énergétique sur Terre.Parce que l'atmosphère de Pandora est toxique pour les humains, ceux-ci ont créé le Programme Avatar, qui permet à des « pilotes » humains de lier leur esprit à un avatar, un corps biologique commandé à distance, capable de survivre dans cette atmosphère létale. Ces avatars sont des hybrides créés génétiquement en croisant l'ADN humain avec celui des Na'vi, les autochtones de Pandora.\n";
                wstr += L"Sous sa forme d'avatar, Jake peut de nouveau marcher. On lui confie une mission d'infiltration auprès des Na'vi, devenus un obstacle trop conséquent à l'exploitation du précieux minerai.Mais tout va changer lorsque Neytiri, une très belle Na'vi, sauve la vie de Jake...";
                Console_Lire(wstr, 8, 4);
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    inline std::wstring space(int i, wchar_t espace)
    {
        std::wstring wstr = L"";
        //for (auto ===> Pas trouvé !!!)
        for(int j = 0; j < i; j++)
            wstr += espace;
        return wstr;
    }
     
    const void Console_Lire(std::wstring wstr, int x1, int x2)
    {
        rtrim(wstr);
        //
        bool ligne_vide = false;
        bool retrait = false;
        wchar_t entree = L'\n'; // windows = L"\r\n", Unix = L'\n' ??? 
     
        int I, x;
        int i, j, k, n = 0;
        int l, m;
        std::size_t N;
        // // // //  //
        wstr += entree;
        // // // //  //
        int p = 0;
        std::vector<std::pair <std::wstring, int>> P;
        std::wstring keycolor;
        N = wstr.length();
        i = 0;
        while (i < N)
        {
            if (wstr[i] == L'\x1b')
            {
                j = i;
                keycolor = L'\x1b';
                j++;
                while (wstr[j] != L'm' || j >= N)
                {
                    keycolor += wstr[j];
                    j++;
                }
                keycolor += L'm';
                P.push_back(make_pair(keycolor, i));
                if (i != 0)
                    wstr = wstr.substr(0, i) + wstr.substr(j + 1);
                else
                    wstr = wstr.substr(j + 1);
                p++;
                N = wstr.length();
            }
            i++;
        }
        std::vector<std::pair<std::wstring, int>>::iterator iter;
     
        x = x1;
        I = X - x;
        j = 0;
        if (I < N)
            n = I;
        else
            n = (int)N;
        iter = P.begin();
        while (j < N)
        {
            // Ok
            if (wstr[j] == entree && retrait)
                ligne_vide = true;
            else
            {
                // Ok
    #if Console_Lire_txt_ == 1
                std::wcout << space(x, L'_');
    #else
                std::wcout << space(x, L' ');
    #endif
                // Ok
                while (wstr[j] == L' ')
                {
                    j++;
                    n++;
                    if (n > N)
                        n = (int)N;
                }
                // Ok
                k = j;
                for (j = k; k < n; k++)
                {
                    if (wstr[k] == entree)
                        break;
                }
                if (k != n)
                {
                    retrait = true;
                    n = k;
                }
                else
                { // ???
                    ligne_vide = false;
                    retrait = false;
                    while (wstr[n] != L' ')
                        n--;
                }
                // Ok
                k = j;
                l = 0;
                for (j = k; k < n; k++)
                {
                    if (p != 0 && k == iter->second)
                    {
                        std::wcout << iter->first;
                        iter++;
                    }
                    std::wcout << wstr[k];
                    l++;
                }
                // Ok
                j = k;
                m = X - (x + l);
    #if Console_Lire_txt_ == 1
                std::wcout << space(m, L'¯');
    #else
                std::wcout << space(m, L' ');
    #endif
            }
            // Ok
            if (ligne_vide && retrait)
            {
                ligne_vide = false;
                j++;
                n++;
                if (n > N)
                    n = (int)N;
                x = x1;
                continue;
            }
            else if (!ligne_vide && retrait)
            {
                retrait = false;
                x = x1;
            }
            else
            {
                ligne_vide = false;
                retrait = false;
                x = x2;
            }
            j = n;
            if (p != 0
                &&
                j == iter->second
                )
            {
                std::wcout << iter->first;
                iter++;
            }
            j++;
            // x ?
            n += (X - x);
            if (n > N)
                n = (int)N;
        }
        if (p != 0 && P.back().second <= N)
        {
            std::wcout << P.back().first;
        }
        return;
    }
    https:://www. ? ---> class, pair, assert, etc... (20 pages ou plus) ?

    Merci beaucoup

  8. #328
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 152
    Points : 12 260
    Points
    12 260

  9. #329
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut


    Voilà, mais pas bien !

    Code :
    const void Console_Lire et avec WriteFile ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    DWORD dwMode = 0;
    BOOL res = WriteFile(hOut, &str[0], (DWORD)(str.size() * sizeof(wchar_t)), &dwMode, NULL);
    assert(res == TRUE);
    --------------------
    Vous devez injecter vos sources contenues dans votre machine vers Github, en utilisant un client Github ou en configurant votre projet dans Visual Studio et demander à Visual Studio de faire cette injection.
    Complexes !!! Moi, simple !!!

    Merci !

  10. #330
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Voilà :
    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
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    173
    174
    175
    176
    177
    178
    179
    180
    181
    182
    183
    184
    const void Console_Lire2(std::wstring wstr, int x1, int x2)
    {
        rtrim(wstr);
        //
        bool ligne_vide = false;
        bool retrait = false;
        wchar_t entree = L'\n'; // windows = L"\r\n", Unix = L'\n' ??? 
     
        int I, x;
        int i, j, k, n = 0;
        int l, m;
        std::size_t N;
        // // // //  //
        wstr += entree;
        // // // //  //
        int p = 0;
        std::vector<std::pair <std::wstring, int>> P;
        std::wstring keycolor;
        N = wstr.length();
        i = 0;
        while (i < N)
        {
            if (wstr[i] == L'\x1b')
            {
                j = i;
                keycolor = L'\x1b';
                j++;
                while (wstr[j] != L'm' || j >= N)
                {
                    keycolor += wstr[j];
                    j++;
                }
                keycolor += L'm';
                P.push_back(make_pair(keycolor, i));
                if (i != 0)
                    wstr = wstr.substr(0, i) + wstr.substr(j + 1);
                else
                    wstr = wstr.substr(j + 1);
                p++;
                N = wstr.length();
            }
            i++;
        }
        std::vector<std::pair<std::wstring, int>>::iterator iter;
        //std::wstring wstr2;
        //i = 0;
        //for (iter = P.begin(); iter != P.end(); iter++)
        //{
        //    wstr2 = L"\\x1b" + iter->first.substr(1);
        //    std::wcout << i << L" P["
        //        << iter->second << L"] [" << wstr2 << L"] = " << iter->first.length()
        //        << L" " << iter->first[iter->first.length() - 1]
        //        << std::endl;
         //   i++;
        //}
        DWORD dwMode = 0;
        BOOL res = false;
        HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        std::wstring wstrleft, str = L"", wstrright;
     
        x = x1;
        I = X - x;
        j = 0;
        if (I < N)
            n = I;
        else
            n = (int)N;
        iter = P.begin();
        while (j < N)
        {
            // Ok
            if (wstr[j] == entree && retrait)
                ligne_vide = true;
            else
            {
                // Ok
    #if Console_Lire_txt_ == 1
                wstrleft = space(x, L'_');
    #else
                wstrleft = space(x, L' ');
    #endif
                // Ok
                while (wstr[j] == L' ')
                {
                    str += wstr[j];
                    j++;
                    n++;
                    if (n > N)
                        n = (int)N;
                }
                // Ok
                k = j;
                for (j = k; k < n; k++)
                {
                    if (wstr[k] == entree)
                    {
                        str += entree;
                        break;
                    }
                }
                if (k != n)
                {
                    retrait = true;
                    n = k;
                }
                else
                { // ???
                    ligne_vide = false;
                    retrait = false;
                    while (wstr[n] != L' ')
                        n--;
                }
                // Ok
                k = j;
                l = 0;
                for (j = k; k < n; k++)
                {
                    if (p != 0 && k == iter->second)
                    {
                        //std::wcout << iter->first;
                        str += iter->first;
                        iter++;
                    }
                    //std::wcout << wstr[k];
                    str += wstr[k];
                    l++;
                }
                // Ok
                j = k;
                m = X - (x + l);
    #if Console_Lire_txt_ == 1
                wstrright = space(m, L'¯');
    #else
                wstrright = space(m, L' ');
    #endif
                str = wstrleft + wstr + wstrright;
                res = WriteFile(hOut, &str[0], (DWORD)(str.size() * sizeof(wchar_t)), &dwMode, NULL);
                assert(res == TRUE);
            }
            // Ok
            if (ligne_vide && retrait)
            {
                ligne_vide = false;
                j++;
                n++;
                if (n > N)
                    n = (int)N;
                x = x1;
                continue;
            }
            else if (!ligne_vide && retrait)
            {
                retrait = false;
                x = x1;
            }
            else
            {
                ligne_vide = false;
                retrait = false;
                x = x2;
            }
            j = n;
            if (p != 0
                &&
                j == iter->second
                )
            {
                //std::wcout << iter->first;
                str += iter->first;
                iter++;
            }
            str = L"";
            j++;
            // x ?
            n += (X - x);
            if (n > N)
                n = (int)N;
        }
        if (p != 0 && P.back().second <= N)
        {
            std::wcout << P.back().first;
        }
        return;
    }
    Oui ou non ???

  11. #331
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Bonjour,

    :-(

    J'en ai marre !!!

  12. #332
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 152
    Points : 12 260
    Points
    12 260
    Par défaut
    const void Console_Lire et avec WriteFile ???
    Console_Lire fait des trucs affreusement complexes sans utiliser "WriteFile" mais "std::wcout".

    En utilisant "std::wcout" et non "WriteFile", vous ne pouvez pas simplifier facilement le code de Console_Lire.

    Vous ne pouvez vraisemblablement pas juste remplacer les "std::wcout" par des "WriteFile".

    En utilisant "WriteFile", vous ne seriez pas obliger de traiter les séquences d'échappement commençant par "\x1b"

    --------------------
    Vous devez injecter vos sources contenues dans votre machine vers Github, en utilisant un client Github ou en configurant votre projet dans Visual Studio et demander à Visual Studio de faire cette injection.
    Complexes !!! Moi, simple !!!

    Merci !


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const void Console_Lire2(std::wstring wstr, int x1, int x2)...
    Votre fonction "Console_Lire2" prend le pire des 2 mondes :
    Votre code est affreusement complexe,
    vous mélangez des "std::wcout" et des "WriteFile"

    Vous ne devriez pas faire "Console_Lire2" à partir des "Console_Lire" mais partir d'une fonction "vierge" et ajouter ce qui est nécessaire à son action, donc plus de gestion des séquences d'échappement, et utilisation de nom de variables plus parlant et code plus simple et clair.

    Donc
    Oui ou non ???
    => Non

    Quel est votre objectif à court terme, svp ?
    Comprendre par le détail le fonctionnement de "Console_Lire" ?
    Faire l'équivalent de "Console_Lire" mais en beaucoup plus simple ?
    Autre ?

  13. #333
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 379
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

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

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 379
    Points : 41 573
    Points
    41 573
    Par défaut
    Ce que j'ai du mal à comprendre, c'est pourquoi une fonction nommée Console_Lire() fait des écritures.

  14. #334
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 152
    Points : 12 260
    Points
    12 260
    Par défaut
    Le nommage des fonctions et des variables, ainsi que le respect du SRP, c'est clairement un problème mais je ne crois pas que c'est dans les priorités du PO.
    Cela explique pourquoi "Console_Lire" est "proche" de "WriteFile".

  15. #335
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Alors, explique-moi ? :

    const void Console_Lire(std::wstring wstr, int x1, int x2)
    ou
    const void Console_Lire(std::wstring& wstr, int x1, int x2)
    avec WriteFile !

    ____Avatar 2 : la voie de l'eau
    ____3h 12min
    ____Se déroulant plus d’une décennie après les événements relatés dans le premier film, AVATAR : LA VOIE DE L’EAU raconte l'histoire des membres de la famille Sully (Jake, Neytiri et leurs enfants), les épreuves auxquelles ils sont confrontés, les chemins qu’ils doivent emprunter pour se protéger les uns les autres, les batailles qu’ils doivent mener pour rester en vie et les tragédies qu'ils endurent.
    Bleu, vert et '_' : x1

    Exemples (films ou séries) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const void Serie::PrintAvec(const std::vector<std::pair<std::wstring, std::wstring>> avec)
    {
    ...
            Console_Lire(avec_str + L"\r\n", 4, 7);
        }
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const void Cinema::PrintTitre()
    {
    ...
    		// Note
    		wstr = PrintNote();
    		Console_Lire(titre_str + wstr, 0, 0);
    	}
    }
    etc...

    --------------------------
    Ok ou pas (film) ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	std::vector<std::wstring>keyColor; // keyColor[0] (bleu) et keyColor[1] (vert)
    	std::wstring valuesColor; // Blanc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const int Cinema::Ok_C(bool P_C_Espace1, wchar_t P_C_H, bool P_C_Espace2, bool P_C_Espace3, std::wstring P_C_MIN, std::wstring P_C_T, std::wstring P_C_t, std::wstring P_C_W, std::wstring P_C_w) // plus tard !
    {
    	C_Espace1 = P_C_Espace1; // plus tard !
    	C_H = P_C_H; // plus tard !
    	C_Espace2 = P_C_Espace2; // plus tard !
    	C_Espace3 = P_C_Espace3; // plus tard !
    	C_MIN = P_C_MIN; // plus tard !
    	keyColor.push_back(P_C_T);
    	keyColor.push_back(P_C_W);
    	valuesColor = P_C_t;
     
    	return EXIT_SUCCESS; // plus tard !
    }
    cinema ---> film : plus tard !!!

    -------------------------
    https:://www. ? ---> class, pair, assert, etc... (20 pages ou plus) ?
    Nouveau PC ! Alors...

    -------------------------
    GitHub : anglais !
    Drag addition files here to add them to your repository
    Je réfléchis !!!

    -------------------------
    Merci beaucoup

  16. #336
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 152
    Points : 12 260
    Points
    12 260
    Par défaut
    Alors, explique-moi ? :
    Excusez-nous, comme dans tout forum, ça a tendances à dériver sur plein de sujets.

    Pouvez-vous spécifier un peu plus votre demande d'explications, svp ?

    Si vous ne comprenez pas tout, tout de suite, pas grave, on expliquera plus finement là où ça coince.

    const void Console_Lire(std::wstring wstr, int x1, int x2)
    ou
    const void Console_Lire(std::wstring& wstr, int x1, int x2)
    avec WriteFile !
    On n'est d'accord que c'est "Console_Lire" et pas "Console_Lire2"

    Moi, j'avais compris que "Console_Lire", c'est le code d'origine et que "Console_Lire2" est une tentative d'utiliser "WriteFile" dans l'implémentation (donc utilisation "à moyen terme" de la ConsoleAPI qui simplifierait grandement le code) .
    Comme je l'ai indiquer dans le message précédent, ce "Console_Lire2" est une fausse bonne idée car vous vous retrouvez avec un code encore plus complexe qu'avant car vous avez la complexité de "Console_Lire" plus l'utilisation d'une API supplémentaire qui fonctionne mal avec std::wcout en même temps.
    Vous devriez construire une fonction depuis le début en y ajoutant les fonctionnalités dont vous avez besoin (donc sans code de décodage des séquences d'échappement inutile quand vous utilisez la ConsoleAPI, par exemple).
    Ne copiez pas le mauvais code de "Console_Lire".
    Faites votre fonction de 0, avec juste un paramètre, pour commencer, qui passe le contenu de la chaine à écrire dans la console.
    Elle devrait faire quelques lignes.
    Puis, essayez de comprendre l'utilité du second paramètre de "Console_Lire" et essayez de faire pareil mais avec une implémentation bien plus simple (oui c'est faisable bien plus simplement).
    Puis, idem pour le second paramètre de "Console_Lire".
    A la fin, vous aurez une fonction simple qui fera la même chose que "Console_Lire", mais en mieux car plus simplement.

    Si votre question pour sur la différence entre "const void Console_Lire(std::wstring wstr, int x1, int x2)" et "const void Console_Lire(std::wstring& wstr, int x1, int x2)", c'est la présence de l'esperluette (caractère en gars) qui vous intrique ?

    Ici, c'est le concept du mode de passage des paramètres entre un code appelant et la fonction appelée.

    Si vous ne mettez pas d'esperluette (&), c'est que vous passez le paramètre par valeur, c'est à dire que le contenu de la variable, ici "wstr", est une copie de l'argument utilisé par le code appelant.
    Ainsi, en passant le paramètre par valeur, vous savez que le code de la fonction que vous appelé ne peu pas modifier la valeur de l'argument (car la fonction appelée "travaille" sur une copie de l'argument).

    Comme "Console_Lire" n'a légitiment pas besoin de modifier l'argument, le passage par valeur : "const void Console_Lire(std::wstring wstr, int x1, int x2)" serait pertinent.
    Mais avec ce passage par valeur, il y a clonage de la chaine de caractère contenu dans le paramètre "wstr" pour qu'il soit distinct de l'argument.
    Pour éviter cette surcharge de travail, il est possible de passer l'argument par référence en ajoutant l'esperluette (&) à la fin du type du paramètre, mais pour interdire au code de la fonction de pouvoir modifier le contenu du paramètre, on ajoute au type du paramètre le mot clé "const".

    Donc une signature bien plus correcte de Console_Lire serait :
    void Console_Lire(const std::wstring& wstr, int x1, int x2)

    Bleu, vert et '_' : x1
    Le paramètre "x1" est le nombre de caractères qui correspond au retrait à appliquer au texte.
    Dans votre copie de la console, cela correspond aux underscores (_) devant "Avatar" ou "3h ".
    C'est des underscores et pas des espaces car la constante de compilation "Console_Lire_txt_ " est égale à 1. (cf. Les figne 71 à 75 du code contenant la fonction "Console_Lire".
    (Vous ne devriez pas utiliser ces cochonneries de constante de compilation)

    Les couleurs sont obtenues par l'utilisations de séquence d'échappement commençant par "\x1b".
    En entrée, dans le contenu du 1 paramètre de "Console_Lire" , ces séquences d'échappement apparaissent à chaque changement de couleur.
    Le code de "Console_Lire" détecte chacune de ces séquences d'échappement stocke l'endroit où elles apparaissaient dans la variable "P", et supprime ces séquences de la chaine à afficher.
    Quand la procédure en est à écrire le texte dans la console, elle vérifie que chaque caractère n'a pas été enregistré comme étant de couleur, via le contenu de la variable "P". Si caractère à afficher doit être de couleur, la procédure ajoute une séquence d'échappement pour que la console affiche ce caractère avec la "bonne" couleur, et cela pour chaque caractère de couleur.
    Si on n'utilise la consoleAPI pour qu'elle interprète directement ces séquence d'échappement commençant par "\x1b", vous n'aurez pas à faire tout ce travail : La console comprendra elle même les séquences d'échappement sans que vous ayez à les décortiquer.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    const void Serie::PrintAvec(const std::vector<std::pair<std::wstring, std::wstring>> avec)
    {
    ...
            Console_Lire(avec_str + L"\r\n", 4, 7);
        }
    }
    Ici, c'est un code qui demande à afficher le contenu de la variable "avec_str", en y ajoutant un retour à la ligne. On demande à ce que la chaine est une indentation de 4 "caractères" (espace ou _), valeur du second argument de l'appel à Console_Lire, et que si la chaine de caractère est trop longue pour s'afficher sur une ligne, l'indentation de la ligne qui suit (qui affichera la suite du texte passé en premier argument) sera de 7 et non de 4 caractères.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const void Cinema::PrintTitre()
    {
    ...
    		// Note
    		wstr = PrintNote();
    		Console_Lire(titre_str + wstr, 0, 0);
    	}
    }
    La même chose mais en affichant le texte composé du contenu de la variable "titre_str" et de la variable "wstr" ("wstr" contient le texte retourné par la fonction "PrintNote") mais en n'utilisant aucune indentation.

    Ok ou pas (film) ?
    Quelle est la question ?
    Si le code fonctionne en faisant ce que vous voulez, c'est OK (pour l'instant).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    	std::vector<std::wstring>keyColor; // keyColor[0] (bleu) et keyColor[1] (vert)
    	std::wstring valuesColor; // Blanc
    Quelle est la question ? (A part que c'est la définition de 2 variables qui portent de très mauvais non, car on ne sait pas quelle est leur usage)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const int Cinema::Ok_C(bool P_C_Espace1, wchar_t P_C_H, bool P_C_Espace2, bool P_C_Espace3, std::wstring P_C_MIN, std::wstring P_C_T, std::wstring P_C_t, std::wstring P_C_W, std::wstring P_C_w) // plus tard !
    {
    	C_Espace1 = P_C_Espace1; // plus tard !
    	C_H = P_C_H; // plus tard !
    	C_Espace2 = P_C_Espace2; // plus tard !
    	C_Espace3 = P_C_Espace3; // plus tard !
    	C_MIN = P_C_MIN; // plus tard !
    	keyColor.push_back(P_C_T);
    	keyColor.push_back(P_C_W);
    	valuesColor = P_C_t;
     
    	return EXIT_SUCCESS; // plus tard !
    }
    Quelle est la question ? (A part que c'est la définition d'une fonction qui porte de très mauvais non, car on ne sait pas quelle est son usage, ainsi que les noms de ses paramètres toujours aussi obscures)

    cinema ---> film : plus tard !!!
    Ok, je crois avoir compris.

    -------------------------
    https:://www. ? ---> class, pair, assert, etc... (20 pages ou plus) ?
    Nouveau PC ! Alors...
    Je ne comprends pas.

    -------------------------
    GitHub : anglais !
    Drag addition files here to add them to your repository
    Je réfléchis !!!
    Une traduction approximative, c'est : "Tirer les fichiers à ajouter ici, pour ajouter dans le dépôt des sources".

    Mais juste avec les manipulations faites à l'écran, ça devrait être plus claire.

  17. #337
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    https:://www. ? ---> class, pair, assert, etc... (20 pages ou plus) ?
    Nouveau PC ! Alors...
    Je ne comprends pas.
    Ancien PC : J'ai oublié le reste du lien (https:://www.) !!!

  18. #338
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 152
    Points : 12 260
    Points
    12 260
    Par défaut
    Pour un site de référence sur le C++ (avec des parties traduites en français, si nécessaire) :
    https://en.cppreference.com/w/cpp/standard_library

    Si vous avez activé la synchronisation sur votre compte navigateur, il y a peut-être moyen de récupérer les favoris et/ou les onglets ouverts sur l'ancienne machine.

  19. #339
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    544
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Ingénieur de déploiement réseaux
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 544
    Points : 0
    Points
    0
    Par défaut
    Bonsoir,

    Pour un site de référence sur le C++ (avec des parties traduites en français, si nécessaire) :
    https://en.cppreference.com/w/cpp/standard_library
    Pas vu ! Plus tard !

    Si vous avez activé la synchronisation sur votre compte navigateur, il y a peut-être moyen de récupérer les favoris et/ou les onglets ouverts sur l'ancienne machine.
    La table, PC en dessous : un seule main !

    Github :
    d:\Work\Prg\CPP\You et :Nom : Github.png
Affichages : 61
Taille : 85,1 Ko

    Merci pour tout

  20. #340
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Conseil

    Informations forums :
    Inscription : Février 2005
    Messages : 5 152
    Points : 12 260
    Points
    12 260
    Par défaut
    La table, PC en dessous : un seule main !
    ???

    Github :
    Tout cela me semble bien configuré.
    Vous n'avez qu'à lâcher dans le carré supérieur où est écrit "Drag files here ..." les fichiers depuis la fenêtre "Explorateur de Solution", ou cliquer sur le lien "choose your files".
    Vous devez sélectionner/lâcher l'ensemble des fichiers qui devront être visibles dans GitHub, pour qu'on puisse les lire et vous aider.
    Je vous conseille d'y mettre tous les .h et les .cpp, voir les txt.
    Une fois que c'est fait, vous sauvez le projet, vous "commitez" dans votre dépôt local, une fois que c'est fait, cherchez dans l'interface de Visual Studio un truc pour "pusher" votre dépôt.
    Après le "push", vos fichiers devraient être visible dans GitHub et on aura une vus d'ensemble à jour de votre projet.

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

Discussions similaires

  1. Probléme avc la formclosing
    Par dv-2008 dans le forum VB.NET
    Réponses: 2
    Dernier message: 23/03/2008, 16h33
  2. probléme avc console.readline()
    Par dv-2008 dans le forum VB.NET
    Réponses: 7
    Dernier message: 10/03/2008, 00h33
  3. j'ai un probléme avc un code vb.net aider moi svp
    Par dv-2008 dans le forum VB.NET
    Réponses: 12
    Dernier message: 29/01/2008, 09h20
  4. Problème avc une requête
    Par Raiga dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 30/06/2007, 18h36
  5. Toujours problème de lien avce la lib Cblas
    Par Kirou dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 19/06/2007, 14h50

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