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. #441
    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
    Il faudrait faire en sorte que vos dépôts GitHub soient "opérationnels" (sans erreurs de compilation ou uniquement ceux qui vous posent problèmes, et facilement testable).

    Pour https://github.com/laurentbouleau/Exemple :
    Le projet est compilable mais quand on lance une session de debugging :
    ttt
    zzz
    episodes.first=[24]
    Erreur : Fichier impossible à ouvrir.
    Assertion failed: (episodes.second.size() != 0), file C:\Users\pbacelar\Documents\GitHub\Exemple\Exemple.cpp, line 644
    Ligne 644 de Exemple.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    assert((episodes.second.size() != 0));
    C'est dû à des valeurs en dur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::wstring nomFichier = L"e:\\Séries.[]\\Gate.[2015 Netflix].Manga\\2015-07-03\\24.txt";
    Je n'ai pas de lecteur e: ni ces fichiers.
    Il faudrait utiliser des chemins relatifs et mettre ces fichiers dans le dépôt GitHub pour qu'on puisse faire tourner les tests.

    Pour https://github.com/laurentbouleau/You
    Le projet de compile pas.
    Les erreurs sont assez faciles à corriger et ne correspondent pas à vos posts récents.
    Je suppose donc que vous avez déjà corrigées ces erreurs.
    Mettez à jours votre dépôt, SVP.

    Par rapport à mon dernier message :
    J'ai vérifié l'encodage des fichiers contenant la chaine "pas-à-pas".

    Dans https://github.com/laurentbouleau/Exemple
    Exemple.cpp contient cette chaine mais en commentaire.
    Mais le fichier "Exemple.cpp" est encodé en ASCII et non en UNICODE.
    Vous devriez convertir ce fichier en UNICODE.

    Dans https://github.com/laurentbouleau/You :
    La chaîne "pas-à-pas" sont dans les fichiers "film.cpp" et "serie.cpp".
    Ces fichiers sont encodés en UTF-8 avec BOM.
    C'est mieux mais je pense que vous devriez convertir les fichiers en UNICODE.

  2. #442
    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,

    Il faudrait faire en sorte que vos dépôts GitHub soient "opérationnels" (sans erreurs de compilation ou uniquement ceux qui vous posent problèmes, et facilement testable).

    Pour https://github.com/laurentbouleau/Exemple :
    Le projet est compilable mais quand on lance une session de debugging :
    Ah !!!

    Ligne 644 de Exemple.cpp :
    Explique-moi ?

    C'est dû à des valeurs en dur :
    Ah ! Ok ! (Exemple.h et Exemple.cpp : class Saison et class Serie : problème !
    https://fr.wikipedia.org/wiki/C%2B%2B
    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
    #include <iostream> 
     
    // Déclaration de la classe de base A.
    class A
    {
    protected:
        void f()
        {
            std::cout << "A::f()\n";
        }
     
    public:
        void g()
        {
            std::cout << "A::g()\n";
        }
    };
     
    // Déclaration de la classe B héritant de A.
    class B : public A
    {
    public:
        using A::f; // rend public A::f()
    };
     
    // Déclaration de la classe C héritant de A.
    class C: public A
    {
    public:
        void g(int Val) // masque A::g()
        {
            std::cout << "C::g(int)\n";
        }
    };
     
    // Déclaration de la classe D héritant de A.
    class D: public A
    {
    public:
        void g(int Val) // masque A::g()
        {
            std::cout << "D::g(int)";
        }
        using A::g;      // démasque A::g()
    };
     
    int main()
    {
        A a;
        B b;
        C c;
        D d;
     
        // a.f();  // impossible car f est protégé dans A
        a.g();
     
        b.f();  // possible car A::f est publique dans B.
     
        // c.g();  // impossible car A::g() est masquée par C::g(int) dans C
        c.g(6); // possible car C::g(int Val) est masquée par C::g(int) dans C
     
        d.g();  // possible car A::g() est démasquée dans D
        d.g(5); // possible car D::g() est démasquée dans D
    }
     
    Le programme ci-dessus affiche :
     
    A::g()
    A::f()
    C::g(int)
    A::g()
    D::g(int)
    J'ai oublié !!! Mais, je cherche !!!

    Je n'ai pas de lecteur e: ni ces fichiers.
    Il faudrait utiliser des chemins relatifs et mettre ces fichiers dans le dépôt GitHub pour qu'on puisse faire tourner les tests.
    Ah ! Chemins relatifs ? Mince !!!

    Le projet de compile pas.
    Les erreurs sont assez faciles à corriger et ne correspondent pas à vos posts récents.
    Je suppose donc que vous avez déjà corrigées ces erreurs.
    Mettez à jours votre dépôt, SVP.
    Ok ! (https://github.com/laurentbouleau/You)

    Par rapport à mon dernier message :
    J'ai vérifié l'encodage des fichiers contenant la chaine "pas-à-pas".

    Dans https://github.com/laurentbouleau/Exemple
    Exemple.cpp contient cette chaine mais en commentaire.
    Mais le fichier "Exemple.cpp" est encodé en ASCII et non en UNICODE.
    Vous devriez convertir ce fichier en UNICODE.

    Dans https://github.com/laurentbouleau/You :
    La chaîne "pas-à-pas" sont dans les fichiers "film.cpp" et "serie.cpp".
    Ces fichiers sont encodés en UTF-8 avec BOM.
    C'est mieux mais je pense que vous devriez convertir les fichiers en UNICODE.
    Oui ! Mais, où il-est ? Crevé !!! Dur !!!

    Merci d'avance

  3. #443
    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
    Explique-moi ?
    J'ai cette erreur à l'exécution car
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::wstring nomFichier = L"e:\\Séries.[]\\Gate.[2015 Netflix].Manga\\2015-07-03\\24.txt";
    et comme je n'est pas ce fichier dans mon système de fichier, ça plante ligne 644.

    Je peux toujours modifier la valeur de la variable "nomFichier" pour correspondre à un fichier dans mon système, mais comme j'ai pas le contenu du fichier, etc...
    Le plus simple, c'est que ces fichiers qui servent aux tests soient aussi dans le dépôt Github et qu'on utilise des chemins relatifs vers ces fichiers et non des chemins absolus ; pour que les personnes récupérant le dépôt puissent directement lancer les tests.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Ah ! Ok ! (Exemple.h et Exemple.cpp : class Saison et class Serie : problème !
    + un extrait de Wikipédia sur l'utilisation du mot-clé using pour augmenter la visibilité de membre d'une classe de base dans une classe dérivée.

    Je ne vois pas le rapport avec vos "problèmes" actuels.

    Ah ! Chemins relatifs ? Mince !!!
    Vous connaissez la différence entre un chemin relatif vers un fichier et un chemin absolu vers un fichier ?

    Oui ! Mais, où il-est ? Crevé !!! Dur !!!
    https://learn.microsoft.com/en-us/vi...g?view=vs-2022

  4. #444
    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 : Fichier --->
    Unicode (UTF-8 avec signature) Page de codes 65001
    Windows (CR LF)
    ...
    Unix (LF)
    Séparateur de ligne Unicode
    Séparateur de paragraphe Unicode
    Unicode - Page de codes 1200
    ...
    Unicode (Big-Endian)- Page de codes 1200
    ...
    ...
    Unicode (UTF-8 sans signature) Page de codes 65001
    Séparateur de ligne Unicode
    ...
    Ben

    Vous connaissez la différence entre un chemin relatif vers un fichier et un chemin absolu vers un fichier ?
    Avant AVC, oui !!! Après, je sais pas !

  5. #445
    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
    L"../Gate.[2015 Netflix].Manga" ok ou pas ?
    Vous connaissez la différence entre un chemin relatif vers un fichier et un chemin absolu vers un fichier ?
    Ben !!!
    Absolu : L"e:\\Séries.[]\\Berlin.[2023 Netflix]"
    Relatif : L"..\\Berlin.[2023 Netflix]"

    Ok ou pas ?
    Merci

  6. #446
    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 : Fichier --->
    Unicode (UTF-8 avec signature) Page de codes 65001
    Windows (CR LF)
    ...
    Unix (LF)
    Séparateur de ligne Unicode
    Séparateur de paragraphe Unicode
    Unicode - Page de codes 1200
    ...
    Unicode (Big-Endian)- Page de codes 1200
    ...
    ...
    Unicode (UTF-8 sans signature) Page de codes 65001
    Séparateur de ligne Unicode
    ...
    Ben
    Je prendrais "Unicode - Page de codes 1200" ou un "Unicode" proche de l'UTF-8 actuel du fichier, pour réduire les erreurs de conversions.

    Absolu : L"e:\\Séries.[]\\Berlin.[2023 Netflix]"
    Relatif : L"..\\Berlin.[2023 Netflix]"

    Ok ou pas ?
    Ok

    Maintenant, il faut faire en sorte que "Berlin.[2023 Netflix]" (fichier ou répertoire) soit dans le dépôt Github, pour que les autres utilisateurs du dépôt puisse lancer le programme de test.

  7. #447
    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
    Maintenant, il faut faire en sorte que "Berlin.[2023 Netflix]" (fichier ou répertoire) soit dans le dépôt Github, pour que les autres utilisateurs du dépôt puisse lancer le programme de test.
    Ok !
    https://github.com/laurentbouleau/Exemple : Exemple.txt : ok !

    Merci

  8. #448
    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
    You.sin : exemple :
    Nom : Capture d’écran 2024-01-11 202216.png
Affichages : 169
Taille : 21,8 Ko
    ???

    Merci

  9. #449
    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,

    class Saison et class Serie : Comment faire ?

    Merci d'avance

  10. #450
    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,

    Je peux toujours modifier la valeur de la variable "nomFichier" pour correspondre à un fichier dans mon système, mais comme j'ai pas le contenu du fichier, etc...
    Le plus simple, c'est que ces fichiers qui servent aux tests soient aussi dans le dépôt Github et qu'on utilise des chemins relatifs vers ces fichiers et non des chemins absolus ; pour que les personnes récupérant le dépôt puissent directement lancer les tests.
    Et :
    Absolu : L"e:\\Séries.[]\\Berlin.[2023 Netflix]"
    Relatif : L"..\\Berlin.[2023 Netflix]"
    Ok ! Mais : https://github.com/laurentbouleau/Exemple
    d:/Work/Prg/CPP/Exemple
    et
    Absolu : L"e:\\Séries.[]\\Berlin.[2023 Netflix]"
    Relatif : L"..\\Berlin.[2023 Netflix]"
    Problème et solution ???

    Merci beaucoup

  11. #451
    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
    Maintenant, il faut faire en sorte que "Berlin.[2023 Netflix]" (fichier ou répertoire) soit dans le dépôt Github, pour que les autres utilisateurs du dépôt puisse lancer le programme de test.
    Ok !
    Ok peut-être mais je ne vois toujours pas le fichier/répertoire "Berlin.[2023 Netflix]" dans le dépôt Git.

    L'usage de l'encodage Unicode UTF-16 des sources semble poser pas mal de problème avec les outils Git.
    "GitHub Desktop", mon client de synchronisation GitHub (mon VS semble ne pas apprécier les certificat SSL auto signé) indique que ces fichiers sont des binaires et donc plus de comparaison avec les versions antérieures, ni même visualisable dans l'éditeur intégré.
    Dans Visual Studio, un bandeau indique que la comparaison des sources ne peut pas se faire avec des encodages différents.

    Comme je l'ai déjà indiqué, on évite les valeurs en dur dans le code, donc, que les outils ne soient pas trop contents de ça, c'est pas très étonnant.

    En utilisant Notepad++ pour valider l'encodage de "Exemple.txt" ou des sources du projet d'exemple : c'est OK, c'est un encodage UTF-16 avec LE BOM.

    Le projet ne compile plus et les fichiers qui permettraient de lancer les tests ne sont toujours pas dans dépôt Github. (cf. "Berlin.[2023 Netflix]", etc...)

    Le projet a quelques problèmes avec l'utilisation d'en-tête dépréciés depuis C++17.
    Plutôt que de mettre des "#define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING" un peu n'importe où, je vous conseille d'utiliser les propriétés du projet :
    "Propriétés de configuration" -> "C/C++" -> "Préprocesseur" -> "Définitions de préprocesseur"
    Vous y ajoutez ce qu'il faut, comme "_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING" et d'autres, si vous voulez vraiment utiliser les fonctionnalités de C++17 sans à corriger l'utilisations d'en-t^tte dépréciés par C++17.

    Si vous n'utilisez pas les fonctionnalités de C++17, il est toujours possible de changer le standard du C++ utilisé dans les options du projet :
    "Propriétés de configuration" -> "Général" -> "Norme du langage C++"
    Vous pouvez y sélectionner la norme du C++ que vous voulez.

    Même en "réglant" les choses pour ne plus être embêté par la norme C++ employé, il reste une erreur dans votre code.

    Ligne 1022 de Exemple.cpp :
    serie.saison[0].afficher_Episodes(nomFichier);
    "saison" n'existe pas dans la classe "Serie".
    Il y a "saisons" mais c'est un champ "protected", il n'est donc pas visible depuis l'extérieur de la classe.

    Donc en corrigeant "à l'arrache" (changement du nom du champ appelé dans le code utilisateur + déprotection du champ dans la définition de la classe):
    serie.saisons[0].afficher_Episodes(nomFichier);
    class Serie
    {
    public:
    Serie(void);
    ~Serie();
    void afficher();
    //protected:
    std::vector<Saison>saisons;
    private:
    };
    Le code compile mais l'édition de lien échoue, car dans le .h définisant la classe Serie indique une fonction "afficher" (en rouge dans l'extrait de code précédent) qui n'est défini nul part dans votre projet.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    const wchar_t* p{ L"../" };
    path filePath(p);
     
    filePath /= L"Exemple.txt";
    Bien, vous avez construit un chemin relatif de manière "moderne".

    Mais, dans le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serie.saisons[0].afficher_Episodes(nomFichier);
    Vous n'utilisez pas "filePath" mais "nomFichier" qui est toujours un chemin absolu.

    En mettant en commentaire la ligne 1021 de Exemple.cpp
    Et en commentant la fonction "afficher" de la classe "Serie"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Serie
    {
    public:
        Serie(void);
        ~Serie();
    //   void afficher();
    //protected:
        std::vector<Saison>saisons;
    private:
    };
    On arrive à compiler ET faire l'édition de lien du projet.

    Mais cela montre que vous ne maitrisez pas encore bien le concept de classe :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
        Serie serie;
        Saison saison;
        std::wcout << L"ttt" << std::endl;
        //serie.afficher();
        serie.saisons[0].afficher_Episodes(nomFichier);
    (Remarque : VIREZ-MOI des "std::wcout <<" BORDEL !!!)

    Serie serie;
    Cela crée un objet de type "Serie" de nom "serie" mais dont les champs sont initialisés avec des valeurs par défauts, car vous n'avez donné aucun paramètre en argument du constructeur de "Serie".
    Donc, le champ "saisons", de type "std::vector<Saison>" sera donc initialisé avec un vecteur de Saison de taille 0.
    Donc "serie.saisons[0]" plante, car saisons est vide.
    Je pense que vous devriez supprimer ce constructeur sans paramètre car il ne sert à rien de bon.
    Et le remplacer par un constructeur qui prendrait en paramètre la racine des fichiers contenant les informations sur la Série :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    class Serie
    {
    public:
        Serie(path racine);
        ~Serie();
     //   void afficher();
    //protected:
        std::vector<Saison>saisons;
    private:
    };
    Et dans le constructeur "Serie(path racine)", vous pourrez remplir le champ "saisons" avec le contenu des fichiers et sous-répertoire contenu dans "racine".

    You.sin : exemple :
    Pièce jointe 649106
    ???

    Merci
    Votre projet You compile, mais :

    Dans "you_txt.cpp" ligne 299 et suivantes :
    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
    const int You_txt_OK()
    {
    #if You_txt_OK_ == 1
        B.Ok_T(L"const int You_txt_OK() :");
    #endif
        const wchar_t* p{ L"../" };
        path filePath(p);
     
        filePath /= L"you.txt";
        std::wstring t;
        try
        {
            // Dans le try, on est assuré que toute exception levée
            // pourra être traitée dans le bloc catch situé après.
            t = lire_fichierTxt(L"you.txt");
        }
        // Notez qu'une exception s'attrape par référence constante.
        catch (runtime_error const& exception)
        {
            // On affiche la cause de l'exception.
            std::wcout << L"Erreur : " << exception.what() << std::endl;
        }
    Vous initialisez bien la variable "filePath " pour accéder au fichier "../you.txt" par rapport eu répertoire de travail courant du processus.
    Mais ligne 313 : "t = lire_fichierTxt(L"you.txt");", vous ne vous en servez pas.
    Vous cherchez directement "you.txt" dans le répertoire de travail.
    Mais le programme en trouve un (peut-être le bon, le contenu lu semble OK).

    Dans ce fichier, il y a toujours des chemins absolus, donc pas testable ailleurs, mais le premier problème n'est pas encore là.

    Ça commencer à déconner ici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    t = lire_fichierTxt(L"you.txt");
    lire_fichierTxt lit le fichier "octet" par "octect".
    Mais ligne 331 e" Utils.cpp :
    wstring_convert<codecvt_utf8<wchar_t>, wchar_t> convertiseur;
    Il y a tentative de convertir convertir une chaine UTF-8 vers wstring, or le contenu du fichier est en UTF-16, pas en UTF-8.
    Donc une erreur "bad conversion" se lève car la conversion échoue.
    Mais le catch très mal utilisé qui suit "cache" l'erreur. (et pas de "std::wcout <<", BORDEL)

    Pourquoi avoir changer l'encodage de "you.txt" ? C'est un fichier externe, pas un fichier source.
    Il serait plus simple pour l'utilisateur de fournir les fichiers externes au format UTF-8 plutôt qu'UTF-16, non ?

    C'est à la ligne 334 de "you_txt.cpp" que ça plante :
    t1 = you_substr(t1);
    Mais le problème vient bien de la ligne 313.
    Exception ligne 313 => la variable "t" est vide.
    Et la fonction "you_substr" appelé gère très mal le fait que la chaine passée a une longueur de 0.

    Donc, je n'arrive pas à aller jusqu'au test qui afficherait l'écran que vous nous donnez.

    Pourquoi n'avons-nous pas le même comportement que vous ? (encodage des fichiers ?)

    Bonjour Bacelar,

    class Saison et class Serie : Comment faire ?

    Merci d'avance
    Comme indiqué au début de ce post, je pense que vous devriez changer la signature des constructeurs de ces classes.

    Vous devriez donner en paramètre du constructeur de "Serie" le chemin vers la "racine" dans le système de fichier contenant les informations sur la série.

    Dans le constructeur de la classe Serie, vous lisez le contenu du système de fichier pour remplir le champ "sessions" avec le contenu du système de fichier.
    Le constructeur d'une saison devrait prendre en paramètre la racine dans le système de fichier contenant les informations sur la saison de la série et remplir les champs de la classe Saison avec les données trouvées dans l'arborescence dont la racine a été donné en paramètre de don constructeur (de Saison, pas de Serie).
    La mécanique d'implémentation des constructeurs de Serie et de Saison sont assez proche, donc.
    Tant qu'on n'a pas une arborescence de fichiers de tests dans le dépôt, on ne pourra pas être plus précis.

    Problème et solution ???
    Votre utilisation des classes de la STL pour construire ces chemins relatifs est très bien, mais il faudrait les utiliser comme paramètre de vos fonctions et autres constructeurs d'objets er ne pas reprendre les chemins absolus en paramètre de vos fonctions.

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

    Ok peut-être mais je ne vois toujours pas le fichier/répertoire "Berlin.[2023 Netflix]" dans le dépôt Git.
    Ok !

    L'usage de l'encodage Unicode UTF-16 des sources semble poser pas mal de problème avec les outils Git.
    "GitHub Desktop", mon client de synchronisation GitHub (mon VS semble ne pas apprécier les certificat SSL auto signé) indique que ces fichiers sont des binaires et donc plus de comparaison avec les versions antérieures, ni même visualisable dans l'éditeur intégré.
    Dans Visual Studio, un bandeau indique que la comparaison des sources ne peut pas se faire avec des encodages différents.

    Comme je l'ai déjà indiqué, on évite les valeurs en dur dans le code, donc, que les outils ne soient pas trop contents de ça, c'est pas très étonnant.
    Ok !

    En utilisant Notepad++ pour valider l'encodage de "Exemple.txt" ou des sources du projet d'exemple : c'est OK, c'est un encodage UTF-16 avec LE BOM.
    Ok !

    Le projet ne compile plus et les fichiers qui permettraient de lancer les tests ne sont toujours pas dans dépôt Github. (cf. "Berlin.[2023 Netflix]", etc...)
    Ok !

    Le projet a quelques problèmes avec l'utilisation d'en-tête dépréciés depuis C++17.
    Plutôt que de mettre des "#define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING" un peu n'importe où, je vous conseille d'utiliser les propriétés du projet :
    "Propriétés de configuration" -> "C/C++" -> "Préprocesseur" -> "Définitions de préprocesseur"
    Vous y ajoutez ce qu'il faut, comme "_SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING" et d'autres, si vous voulez vraiment utiliser les fonctionnalités de C++17 sans à corriger l'utilisations d'en-t^tte dépréciés par C++17.
    Marche pas !!!

    Si vous n'utilisez pas les fonctionnalités de C++17...
    ...
    ??? Presque !!!

    (Remarque : VIREZ-MOI des "std::wcout <<" BORDEL !!!)
    Ben :
    Nom : Capture d’écran 2024-01-16 133928.png
Affichages : 123
Taille : 762 octets
    Comment faire ???

    Après, crevé !!!

    Maintenant :
    https://github.com/laurentbouleau/Exemple : ok !!!

    Merci

  13. #453
    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,

    Votre projet You compile, mais :

    Dans "you_txt.cpp" ligne 299 et suivantes :
    ...
    Vous initialisez bien la variable "filePath " pour accéder au fichier "../you.txt" par rapport eu répertoire de travail courant du processus.
    Mais ligne 313 : "t = lire_fichierTxt(L"you.txt");", vous ne vous en servez pas.
    Vous cherchez directement "you.txt" dans le répertoire de travail.
    Mais le programme en trouve un (peut-être le bon, le contenu lu semble OK).

    Dans ce fichier, il y a toujours des chemins absolus, donc pas testable ailleurs, mais le premier problème n'est pas encore là.

    Ça commencer à déconner ici :
    Ok !
    https://github.com/laurentbouleau/You : Ok !

  14. #454
    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,

    Marche pas !!!
    https://github.com/laurentbouleau/Exemple : Erreur !!!

    Nom : Capture d’écran 2024-01-18 120916.png
Affichages : 107
Taille : 85,3 Ko
    et
    Nom : Capture d’écran 2024-01-18 121025.png
Affichages : 109
Taille : 29,9 Ko

    ???

    Merci d'avance

  15. #455
    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,

    Ben, non ! Serie(path racine) !!!

    Exemple.h
    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
    ...
    class Serie
    {
    public:
        //Serie();
        Serie(path racine);
        ~Serie();
        //void afficher();
        std::vector<Saison>saisons{};
        //protected:
        std::wstring nomDossier;
    private:
        const bool PrintDate_ou_Dates();
        bool affichage_Date_ou_Dates = true;
     
    };
    Et : Exemple.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    ...
        const std::wstring wstr = L"e:/Séries.[]/Le Garçon et l'Univers.[2024 Netflix].Mini-série";
        path t2{ wstr };
        Serie serie(t2);
    ...
    ???

  16. #456
    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
    class Serie
    {
    public:
    ...
        Serie(path racine);// { return; }//;
    ...
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
        t += L"+++\\B\\Berlin.[2023 Netflix]\\";
        path t2{ t };
        Serie serie(t2);
        Saison saison{};
        const std::wstring nomDossier = t + L"../2023-12-29";
        serie.saison[0].affichier_Dossier(nomDossier);
    ...
    J'en n'est marre !!!
    Crevé !!!

  17. #457
    Membre chevronné
    Profil pro
    Inscrit en
    Juillet 2006
    Messages
    1 335
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Juillet 2006
    Messages : 1 335
    Points : 1 948
    Points
    1 948
    Par défaut
    Salut,

    Je vient de regarder dans ton github,
    ou est définit la classe (ou type) path ?
    Je ne la voit nulle part.
    Ne manque t'il pas un using dans la définition de ta classe ?

  18. #458
    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

  19. #459
    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,

    ou est définit la classe (ou type) path ?
    Je ne la voit nulle part.
    Ne manque t'il pas un using dans la définition de ta classe ?
    Pardon ?
    Je sus fatigué !!! L'AVC !!!

    Merci

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

    ou est définit la classe (ou type) path ?
    ???

    Moi : Windows 10
    Exemple.h
    #include <filesystem> // C++17 standard header file name
    #include <experimental/filesystem> // Header file for pre-standard implementation
    Exemple.cpp
    #define _SILENCE_CXX17_CODECVT_HEADER_DEPRECATION_WARNING
    #define _SILENCE_EXPERIMENTAL_FILESYSTEM_DEPRECATION_WARNING 1
    ...
    #include <filesystem> // C++17 standard header file name
    #include <experimental/filesystem> // Header file for pre-standard implementation
    using namespace std::experimental::filesystem::v1;
    using namespace std;

    ???

    Merci d'avance

+ 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