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. #341
    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
    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.
    Ok ! Fait !

    Github : https://github.com/laurentbouleau/You

    Après ?

  2. #342
    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
    Ok, je confirme qu'on n'a accès à vos sources, maintenant.
    On aura donc une vu d'ensemble de votre code maintenant.

    Après ?
    Répondre à nos questions précédentes, ça serait déjà pas mal.

    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.
    ...
    etc...

  3. #343
    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,

    https://learn.microsoft.com/fr-fr/wi...eapi-writefile : [in, out, optional] lpOverlapped (OVERLAPPED ???)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Console_Lire(const std::wstring& wstr, int x1)
    {
        HANDLE hOut;
        DWORD dwMode = 0;
    // x1 = ici !
        BOOL res = WriteFile(hOut, &wstr[0], (DWORD)(wstr.size() * sizeof(wchar_t)), &dwMode, /*ICI !!!*/);
        assert(res == TRUE);
     
    }
    Merci d'avance

  4. #344
    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
    https://learn.microsoft.com/fr-fr/wi...eapi-writefile : [in, out, optional] lpOverlapped (OVERLAPPED ???)
    Ce paramètre n'est utile que dans des cas d'usage très avancés, où les lectures et les écritures ne sont pas synchrones (la fonction retourne un résultat avant la fin totale de l'opération demandée).
    Mettez toujours NULL dans votre cas d'usage.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Console_Lire(const std::wstring& wstr, int x1)...
    Cette fonction ne semble pas exister dans le dépôt GitHub "You".
    C'est compliqué de comprendre son usage attendu sans le code appelant.

    Il a toujours la même tare d'un nom qui n'a que peu de rapport avec ce que fait réellement cette fonction.

    Vous utilisez une variable locale "hOut" qui n'est pas initialisée.
    Vous devriez plutôt passé cette valeur via un paramètre de la fonction, cela permettra d'explicitement ne pas la confondre avec les versions de Console_Lire qui utilisent "std::wcout".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void Console_Lire(HANDLE hOut, const std::wstring& wstr, int x1)
    {
        DWORD numberOfBytesWritten = 0;
    // x1 = ici !
        BOOL res = WriteFile(hOut, &wstr[0], (DWORD)(wstr.size() * sizeof(wchar_t)), &numberOfBytesWritten , NULL);
        assert(res == TRUE);
    }
    Cela permettra d'utiliser la même fonction mais pour autre chose que la console standard.

    Pour "x1", on vous a déjà indiqué que ce n'est pas très pertinent de donner des arguments sur la mise en forme des textes à une fonction d'aussi bas niveau (au sens qu'elle ne connait pas beaucoup le contexte d'appel (couleur d'écriture courante, nombre de caractère qui compose une ligne d'affichage dans la console, etc...).
    Pour rappel, "x1" est la taille de l'indentation à mettre avant de commencer à écrire le texte.
    Dans le code présent dans le dépôt GitHub You, dans la fonction "Console_Lire", dans le fichier "Utils.cpp", cette indentation est implémentée avec les lignes 1602 à 1606 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    #if Console_Lire_txt_ == 1
                std::wcout << space(m, L'¯');
    #else
                std::wcout << space(m, L' ');
    #endif
    Je ne vous conseille pas de faire cela de cette manière, car vous y utilisez "std::wcout" qui est une version "carrossée" de la sortie standard/console.
    Vous devriez être cohérent et n'accéder à la sortie standard/console que d'une manière, donc en utilisant le "WriteFile" et "hOut".

    Donc, si on veut être cohérent mais toujours indiquer la taille de l'indentation, cela donnerait un code comme ci-après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void Console_Lire(HANDLE hOut, const std::wstring& wstr, int x1)
    {
        DWORD numberOfBytesWritten = 0;
    
        std::wstring ind(x1, L' ');
    
    
        BOOL res = WriteFile(hOut, &ind[0], (DWORD)(ind.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
    
        res = WriteFile(hOut, &wstr[0], (DWORD)(wstr.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
    }
    (Après, je suis pas sûr que ce type de code fonctionne avec des chaines de caractère très longue (cf. détail d'implémentation de std::wstring))

    Moi, je vous conseillerais de dégager le paramètre "x1" et laisser le code appelant gérer lui-même le positionnement et le découpage des chaines de caractère à afficher dans la console.
    Le code appelant peut accéder à des information comme la largeur de la console, etc... et customiser le positionnement et le découpage des chaines de caractère à afficher dans la console en fonction de cette largeur, etc...

  5. #345
    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,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    void Console_Lire(HANDLE hOut, const std::wstring& wstr, int x1)
    {
        DWORD numberOfBytesWritten = 0;
     
        std::wstring ind(x1, L' ');
     
     
        BOOL res = WriteFile(hOut, &ind[0], (DWORD)(ind.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
     
        res = WriteFile(hOut, &wstr[0], (DWORD)(wstr.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
    }
    Ok !

    Comment faire ?

    ------------------------
    ind ? Ah bon !!!

    Merci d'avance

  6. #346
    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
    Comment faire ?
    Maintenant que vos source sont liée à GitHub, vous n'avez qu'à "commiter" vos changements (en local), puis de "push" vers GitHub.
    Après cela, nous pourront voir vos modifications directement dans GitHub.

    ind ? Ah bon !!!
    "ind" pour indentation.
    C'est pas top comme nom de variable.
    Mais comme je l'ai déjà indiqué, je ne pense pas qu'il faille intégrer la gestion de l'indentation dans cette fonction.
    Mais bon, c'est quand même plus explicite que "x1".

  7. #347
    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 bacelar,

    Maintenant que vos source sont liée à GitHub, vous n'avez qu'à "commiter" vos changements (en local), puis de "push" vers GitHub.
    Après cela, nous pourront voir vos modifications directement dans GitHub.
    Je sais pas !!!

    "ind" pour indentation.
    C'est pas top comme nom de variable.
    Mais comme je l'ai déjà indiqué, je ne pense pas qu'il faille intégrer la gestion de l'indentation dans cette fonction.
    Mais bon, c'est quand même plus explicite que "x1".
    Ok !
    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
    void Console_Lire(HANDLE hOut, const std::wstring& wstr, int x)
    {
        DWORD numberOfBytesWritten = 0;
     
    #if Console_Lire_txt_ == 1
        std::wstring ind(x, L'_');
    #else
        std::wstring ind(x, L' ');
    #endif
        BOOL res = WriteFile(hOut, &ind[0], (DWORD)(ind.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
     
        res = WriteFile(hOut, &wstr[0], (DWORD)(wstr.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
    }
    Vous expliquez ?

    Sinon :
    Nom : Capture d’écran 2023-10-13 122151.png
Affichages : 129
Taille : 92,1 Ko
    Mince !!!

    Merci beaucoup

  8. #348
    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,

    Maintenant que vos source sont liée à GitHub, vous n'avez qu'à "commiter" vos changements (en local), puis de "push" vers GitHub.
    Après cela, nous pourront voir vos modifications directement dans GitHub.
    Ok ! Enfin !

    Merci

    (Pas compris, mais ok !)

  9. #349
    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
    je sais pas !!!
    J'allais vous répondre avec des copies d'écran, mais je viens de voir que vous avez réussi à mettre à jour votre dépôt il y a 30 minutes.
    Donc pas trop la peine de macher le travail, je pense.

    Quelques remarques :

    Vos sources n'étaient pas compilables car il manquait des variables (des champs dans certaines classes, voir des constantes globales (beurk, mais c'est votre code qui souffre de bien trop de copier-coller)).
    Faites un effort prioritaire pour que le code que vous publiez soit compilable, SVP.

    Vous avez "commité/sauvé" vos modifications en assignant comme label/nom à ce lot de modification "4" : essayez de nommer ces "commit/ensemble de modifications sauvegardées" avec quelque chose de plus parlant comme "correction de l'affichage des caractères avec accent", etc...

    Vous avez remplacez des appels à "const int Console_Lire_txt2(std::wstring Textes, int x1, int x2)" avec des appels à "void Console_Lire(HANDLE hOut, const std::wstring& wstr, int x)" or, la seconde fonction n'a pas le même niveau de service que la première. En faisant cela, vous générez toutes une collection de bugs complexes à détecter.
    Ne faites pas ces remplacement "en masse" sans avoir tester que la nouvelle fonction fait du bon travail : donc on ne modifie qu'un appel, puis on la teste correctement.
    Et quand la méthode fonctionne dans un contexte, allez voir les autres contextes et modifier la nouvelle fonction pour qu'elle fonctionne correctement dans ces autres contextes. (contexte par contexte, par exemple avec x2 différent de 0, etc...)

    Ajoutez votre ".gitignore", dans votre dépôt, à la racine.

    (Pas compris, mais ok !)
    Mais vous n'avez pas compris quoi ?
    C'est juste que maintenant, vous pouvez sauvegarder (Crt-S ou Enregistrer dans le menu contextuel de l'éditeur) puis "commiter" c'est à dire regroupe l'ensemble des modifications faites depuis le dernier "commit" avec un nom, et enfin "pusher" (envoyer) l'ensemble des modifications vers GitHub, pour que les autres personnes puissent voir ces modifications dans Github. Le tout s'en avoir à sortir de Visual Studio.

    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
    void Console_Lire(HANDLE hOut, const std::wstring& wstr, int x)
    {
        DWORD numberOfBytesWritten = 0;
     
    #if Console_Lire_txt_ == 1
        std::wstring ind(x, L'_');
    #else
        std::wstring ind(x, L' ');
    #endif
        BOOL res = WriteFile(hOut, &ind[0], (DWORD)(ind.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
     
        res = WriteFile(hOut, &wstr[0], (DWORD)(wstr.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
    }
    NON!!!
    Arrêtez de coller des constantes de compilations partout et n'importe comment.

    Si vous voulez que la fonction change de comportement, envoyez dans les paramètres de la fonction ce qu'il faut pour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    void Console_Lire(HANDLE hOut, const std::wstring& wstr, int taille_indentation, wchar_t caractere_indentation = L' ')
    {
        DWORD numberOfBytesWritten = 0;
     
        std::wstring indentation(taille_indentation, caractere_indentation );.
     
        BOOL res = WriteFile(hOut, &indentation[0], (DWORD)(indentation.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
     
        res = WriteFile(hOut, &wstr[0], (DWORD)(wstr.size() * sizeof(wchar_t)), &numberOfBytesWritten, NULL);
        assert(res == TRUE);
    }
    Vous expliquez ?
    Vous expliquez quoi ?
    Vous ajoutez des lignes à la fonction, c'est donc que vous avez compris son fonctionnement, non ?

    Sinon, en résumé :
    On déclare une variable "numberOfBytesWritten " qui stockera le nombre de caractère effectivement écrit lors des appels à la fonction "WriteFile".
    On déclare une variable "indentation" qui contient une chaine de caractère d'une longueur de "taille_indentation" caractères et qui sera remplit de "taille_indentation" fois le même caractère "caractere_indentation".

    Puis on appel la fonction "WriteFile" pour afficher les caractères d'indentation sur la console (car hOut est l'handle sur la sortie de la console).
    On vérifie avec "assert" que l'appel à "WriteFile" c'est bien passé.

    Puis on appel la fonction "WriteFile" pour afficher les caractères du texte contenu dans "wstr" sur la console (car hOut est l'handle sur la sortie de la console).
    On vérifie avec "assert" que l'appel à "WriteFile" c'est bien passé.

    Mince !!!
    La copie d'écran montre que l'affichage des caractères accentués se passe mal, c'est là que l'utilisation de la consoleAPI est nécessaire.
    Je vous invite donc à relire cette file de message qui indique comment configurer la console pour qu'elle puisse correctement afficher ces caractères accentués.

  10. #350
    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 !

  11. #351
    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,

    Github : ok ! : https://github.com/laurentbouleau/You

    La copie d'écran montre que l'affichage des caractères accentués se passe mal, c'est là que l'utilisation de la consoleAPI est nécessaire.
    Je vous invite donc à relire cette file de message qui indique comment configurer la console pour qu'elle puisse correctement afficher ces caractères accentués.
    Lire beaucoup ! Alors fatigué !!!

    Merci d'avance

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

    kaitlyn :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    DWORD current_console_mode = 0;
    GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &current_console_mode);
    SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE)
        , current_console_mode
        | ENABLE_VIRTUAL_TERMINAL_PROCESSING
        | ENABLE_PROCESSED_OUTPUT
    );
    Ok ou pas ?

    Merci beaucoup !

  13. #353
    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
    À vue de nez ça m'a l'air correct.

  14. #354
    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 Médinoc,

    Ben non :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &current_console_mode);
    SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE)
    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    int wmain(int argc, wchar_t* argv[])
    {
    ...
        DWORD current_console_mode = 0;
        GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &current_console_mode);
        SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE)
            , current_console_mode
            | ENABLE_VIRTUAL_TERMINAL_PROCESSING
            | ENABLE_PROCESSED_OUTPUT
        );
    ...
    }
    Nom : Capture d’écran 2023-10-17 204251.png
Affichages : 87
Taille : 26,8 Ko

    Merci d'avance

  15. #355
    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
    Par rapport au code que vous avez référencée :
    https://github.com/DigitalPulseSoftw...dSink.cpp#L159

    Il manque la fameuse ligne 159 :
    int originalConsoleMode = _setmode(_fileno(output), _O_U16TEXT);
    Jetez un coup d'œil à la manière dont @Lynix code, de manière fort simple et "efficace".

  16. #356
    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,

    Marche pas !!!
    int originalConsoleMode = _setmode(_fileno(output), _O_U16TEXT);
    Dessus ou dessous ?

    S'il vous plait ?

    Merci

  17. #357
    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
    int originalConsoleMode = _setmode(_fileno(output), _O_U16TEXT);
    ???
    Merci

  18. #358
    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
    https://learn.microsoft.com/fr-fr/cp...?view=msvc-170

    C'est une fonction qui permet d'indiquer aux autres fonctions qui écrivent du texte dans des fichiers comment les textes doivent être convertis. (ASCII<->UTF8, ASCII<->UTF16,....)
    (la traduction française de la documentation est incompréhensible)

    La sortie console peut être considérée comme un fichier.
    Donc le "_fileno(output)" peut être remplacer par "GetStdHandle(STD_OUTPUT_HANDLE)" pour configurer la sortie de la console standard.

    "_O_U16TEXT"
    https://learn.microsoft.com/fr-fr/cp...?view=msvc-170
    En gros, on demande à ce que le texte soit converti en "UTF-16 sans BOM", si nécessaire.
    Donc, si vous ajoutez la ligne suivante au début de votre code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int originalConsoleMode = _setmode(GetStdHandle(STD_OUTPUT_HANDLE), _O_U16TEXT);
    Ça donne quoi à l'affichage ?

  19. #359
    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
    Avec C :
    #include <fcntl.h>
    #include <io.h>
    #include <stdio.h>

    Ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    int originalConsoleMode = _setmode(GetStdHandle(STD_OUTPUT_HANDLE), _O_U16TEXT);
    Ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        int originalConsoleMode = _setmode((int)GetStdHandle(STD_OUTPUT_HANDLE), _O_U16TEXT);
    Nom : Capture d’écran 2023-10-18 205528.png
Affichages : 79
Taille : 6,3 Ko

    Pas compris !!!

    Merci beaucoup

  20. #360
    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,

    Pas de solution !!!
    Google ===> Traduire cette page ! (web)

    J'en ai marre !!!

+ 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