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. #1081
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Un seul(e) film ou série !!!
    Vous devez vous balader dans l'arborescence des répertoires et des fichiers.
    Quel est l'intérêt de ne faire qu'un Film ou une Serie dans ce cas ?
    Vous pouvez très bien ajouter un break en fin de traitement d'un répertoire racine de film ou de Serie.
    Si vous voulez ne traiter qu'un cas : changer le contenu du répertoire "racines" pour ne contenir qu'un film ou une Serie.

    Pourquoi vous vous prenez la tête ???

    https://github.com/laurentbouleau/Exemple : Janvier 06 (13/01/2025)
    Pourquoi que sur ces 2 fonction ?
    Toutes les types de retour "const void" devrez être remplacer par "void" !!!

  2. #1082
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    Exemple :
    Séries : Dr. STONE.[2019- Crunchyroll].Manga
    Saison 1
    Saison 2
    Hors saison
    Saison 3
    ===>
    Hors saison
    Saison 1
    Saison 2
    Saison 3
    Vector ou swap, etc...
    Avec void Serie:rint_Saisons() ?

    Comment faire ?
    Merci

  3. #1083
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Sur le dépôt GitHub, on n'a pas :
    Saison 1
    Saison 2
    Hors saison
    Saison 3
    Mais
    Saison 1
    Saison 2
    Hors saison
    Vous n'avez pas tout mis dans le dépôt. Il manque la "Saison 3".

    Vous vous obstinez à mettre le code d'affichage dans les classes "Métier" au lieu de faire des classes dédiées à leur affichage.

    La distinction "Saison" vs "Hors-Saison" peut avoir des aspects "Métier", mais comme vous ne voulez les distinguer qu'à l'affichage, on va circonscrire ces machins à une fonction d'affichage.

    Je vais vous donner un nouveau code pour la fonction "Serie:: Print_Saisons" en mode "à l'arrache" (avec des pointeurs nus) :
    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
    void Serie::Print_Saisons()
    {
        std::list<Saison*> hors_saisons;
        std::list<Saison*> non_hors_saisons;
        for (auto& saison : saisons)
        {
            if (saison.m_hors_saison)
            {
                hors_saisons.emplace_back(&saison)
            }
            else
            {
                non_hors_saisons.emplace_back(&saison)
            }
        }
     
        for (auto psaison : hors_saisons)
        {
            psaison->Print();
        }
     
        for (auto psaison : non_hors_saisons)
        {
            psaison->Print();
        }
    }
    Qu'est-ce qui est compliqué au niveau de la conception de la modification de ce type de fonction ???

    Une version plus propre, avec des références, n'est pas directement utilisable car vous avez bâclé la fonction "Saison& operator=(Saison&& src) noexcept" de la classe Saison et les constructeurs de "SequenceVisionnage" en ne propageant pas les valeurs des champs de la source vous la destination pour tous les champs "d'affichage" (m_keyColor, etc...).
    Dans les codes que j'ai déjà fournis, je ne fais pas cette propagation car l'affichage n'a rien à foutre dans ce type de classe.

    Si vous voulez disposer de 2 listes distinctes dans les parties "Métier" de la classe, appelez une fonction "PostTraitement" quand l'ensemble des fichiers ont été traités (elle "ventile" les saisons dans 2 listes, champs de la classe : "m_hors_saisons" et "m_non_hors_saisons"):
    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
    void Serie::PostTraitement()
    {
    //    std::list<Saison> m_hors_saisons;
    //    std::list<Saison> m_non_hors_saisons;
     
        for (auto& saison : saisons)
        {
            if (saison.m_hors_saison)
            {
                m_hors_saisons.emplace_back(move(saison));
            }
            else
            {
                m_non_hors_saisons.emplace_back(move(saison));
            }
        }
    }
    Vous pourrez vous servir de ces 2 listes et plus du vector "saisons" après l'appel de la fonction "PostTraitement", dans les parties "fonctionnelles" de la classe.

    Les codes commencent à être complexes car la structuration des dossiers et fichiers n'est pas "rationnelle" :
    - résumé d'une saison dans un fichier xx.txt (x de 0 à 9) plutôt que dans un fichier "Saison.txt
    - Les Saisons et les Hors Saison avec le même type de noms de répertoire
    - Des types d'information de même nature dans des niveaux différents de l'arborescence ("_Legend of Exorcisme.[].Manga" à la racine mais "Superstore.[2015-2021]" est dans ".../Series.[]/+++/S", pourquoi ?)
    - etc ...

    Peut-on simplifier l'arborescence des fichiers pour rendre le code plus simple ?

  4. #1084
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 06 (17/01/2025)

    ===>
    Dr. STONE.[2019- Crunchyroll].Manga
    Mais
    15/01/2025, 19h51 : bacelar
    Après !!!

    Merci

  5. #1085
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Alors, quel est le problème ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
                    //ajouter ici tout le code nécessaire à vos cas particuliers
                    if (!found)racines.push_back(entry.path())

    Vous n'êtes pas clair dans la définition de vos cas particuliers, je ne peux pas les faire à votre place.

    Votre arborescence me semble bien trop compliqué pour être "raisonnable".

  6. #1086
    Membre actif
    Homme Profil pro
    Développeur de jeux vidéo
    Inscrit en
    Novembre 2023
    Messages
    78
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur de jeux vidéo

    Informations forums :
    Inscription : Novembre 2023
    Messages : 78
    Par défaut
    Salut, tout ceci n'est en effet pas très claire, je ne comprend pas ce que tu essaies de faire mais pour une arborescence tu peux en faire une comme ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    class Serie {
    public:
    ...
    private :
    Serie& film;
    std::vector<std::reference_wrapper<Serie>> saisons;
    std::vector<std::reference_wrapper<Serie>> hors_saisons;
    };
    Ou Serie représente ce que tu veux. Je pense que se sera déjà plus simple que ton arborescence compliquée.

  7. #1087
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 07 (22/01/2025)

    Moi, problème :
    Avant : WordPress.com<===> https://www.b-lolo.fr/ et laurent.bouleau@laposte.net
    Après : WordPress.com<===> https://www.b-lolo.fr/ et laurent.b@b-lolo.fr ---> Jetpack !!!

    J'en ai marre : Google : Laurent Bouleau ===> zéro !!!


  8. #1088
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 08 (23/01/2025)

    Je vais vous donner un nouveau code pour la fonction "Serie:: Print_Saisons" en mode "à l'arrache" (avec des pointeurs nus) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part

    ...

    Qu'est-ce qui est compliqué au niveau de la conception de la modification de ce type de fonction ???

    Une version plus propre, avec des références, n'est pas directement utilisable car vous avez bâclé la fonction "Saison& operator=(Saison&& src) noexcept" de la classe Saison et les constructeurs de "SequenceVisionnage" en ne propageant pas les valeurs des champs de la source vous la destination pour tous les champs "d'affichage" (m_keyColor, etc...).
    Dans les codes que j'ai déjà fournis, je ne fais pas cette propagation car l'affichage n'a rien à foutre dans ce type de classe.

    Si vous voulez disposer de 2 listes distinctes dans les parties "Métier" de la classe, appelez une fonction "PostTraitement" quand l'ensemble des fichiers ont été traités (elle "ventile" les saisons dans 2 listes, champs de la classe : "m_hors_saisons" et "m_non_hors_saisons"):
    Code : Sélectionner tout - Visualiser dans une fenêtre à part

    ...

    Vous pourrez vous servir de ces 2 listes et plus du vector "saisons" après l'appel de la fonction "PostTraitement", dans les parties "fonctionnelles" de la classe.

    Les codes commencent à être complexes car la structuration des dossiers et fichiers n'est pas "rationnelle" :
    - résumé d'une saison dans un fichier xx.txt (x de 0 à 9) plutôt que dans un fichier "Saison.txt
    - Les Saisons et les Hors Saison avec le même type de noms de répertoire
    - Des types d'information de même nature dans des niveaux différents de l'arborescence ("_Legend of Exorcisme.[].Manga" à la racine mais "Superstore.[2015-2021]" est dans ".../Series.[]/+++/S", pourquoi ?)
    - etc ...

    Peut-on simplifier l'arborescence des fichiers pour rendre le code plus simple ?
    Ok ! Mais erreur ! Enfin... Pas compris !!!

  9. #1089
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Ça plante parce que vous collez des valeurs en dur qui ne correspondent plus aux noms des répertoires :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    L"Dr. STONE.[2019-2022 Crunchyroll].Manga",
    Donc en corrigeant cette valeur en dur (suppression de "2022"), votre programme ne devrait plus planter.
    Vous devriez être maintenant capable d'utiliser le débuggeur pour détecter ce genre de problème, on ?

    Si vous aviez utilisé "ma" fonction "wmain", vous n'auriez pas à vous prendre la tête avec des valeurs en dur.

    Vous insistez à vous compliquez la vie.

    Pas compris !!!
    Nous, on ne comprend pas pourquoi vous ne vous simplifiez pas la vie avec une arborescence des fichiers plus simple.
    Soyez plus explicite, SVP, merci.
    Qu'est-ce que vous ne comprenez pas ; ou la première chose que vous ne comprenez pas, SVP ?

  10. #1090
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 09 (23/01/2025)
    Pardon !!!

    Moi, problème :
    Avant : WordPress.com<===> https://www.b-lolo.fr/ et laurent.bouleau@laposte.net
    Après : WordPress.com<===> https://www.b-lolo.fr/ et laurent.b@b-lolo.fr ---> Jetpack !!!

    J'en ai marre : Google : Laurent Bouleau ===> zéro !!!
    Quelqu'un ???

  11. #1091
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Moi, problème :
    Avant : WordPress.com<===> https://www.b-lolo.fr/ et laurent.bouleau@laposte.net
    Après : WordPress.com<===> https://www.b-lolo.fr/ et laurent.b@b-lolo.fr ---> Jetpack !!!

    J'en ai marre : Google : Laurent Bouleau ===> zéro !!!
    Je pense que vous devriez poser ces questions sur l'optimisation du référencement dans une section du forum plus adapter à votre problème.
    Si j'ai bien compris l'essence de vote problème.

  12. #1092
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    Bonsoir,

    Je pense que vous devriez poser ces questions sur l'optimisation du référencement dans une section du forum plus adapter à votre problème.
    Si j'ai bien compris l'essence de vote problème.
    Oui, je sais !!! Mais, comment faire ?

    ------------

    https://github.com/laurentbouleau/Exemple : Janvier 10 (27/01/2025)

    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
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{ saison }
    {
    ...
        std::vector<std::wstring> file_content = lire_fichierTxt(m_cheminFichier.wstring(), { L"\n" }, false);
        m_NumeroEpisode = std::stoi(match[filename_numero_episode_index]);
    
        if (file_content.size() > 0 && file_content[0] != L"")
        {
            std::size_t pos;
            if (m_NumeroEpisode != 0)
            {
                pos = file_content[0].find(L". ");
                if (pos != wstring::npos)
                    file_content[0] = file_content[0].substr(pos + 2);
            }
    
            m_titres = extraire_Titres_Depuis_UneLigne(file_content[0]);
        }
    ...
    }
    Attention : Série : Kaleidoscope.[2023 Netflix]
    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
    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
    struct SequenceVisionnage
    {
        SequenceVisionnage(const Episode& episode, const SequenceVisionnage& src) :
            m_episode{ episode }, m_titres{ src.m_titres }, m_streaming{ src.m_streaming },
            m_duree_en_seconde{ src.m_duree_en_seconde }, m_resume{ src.m_resume },
            m_DatesVisionnage{ src.m_DatesVisionnage }, m_NumeroEpisode{ src.m_NumeroEpisode }
        {
        };
        SequenceVisionnage(const Episode& episode, const InfosVisionnage& info_vis) :
            m_episode{ episode }, m_titres{ info_vis.m_titres }, m_streaming{ info_vis.m_streaming },
            m_duree_en_seconde{ info_vis.m_duree_en_seconde }, m_resume{ info_vis.m_resume },
            m_DatesVisionnage{ info_vis.m_DatesVisionnage }, m_NumeroEpisode{ info_vis.m_NumeroEpisode }
        {
        };
        boolean operator==(const SequenceVisionnage& rhs) const { return this == &rhs; };
    
        std::wstring calcul_Duree_affichage(int numero_sequence) const;
    
        const void AffichagePersonnaliser(AffichagePersonnalisation perso);
    
        void Print(std::vector<std::wstring>&titres, int numero_sequence) const;
    
        void Print(std::vector<std::wstring>& titres, long episode, int numero_sequence) const;
    
        std::wstring Print_Dates_de_visionnage() const;
        long Print_Titre_chiffre(long episode) const;
    ...
        std::wstring m_streaming{ L"" };
        std::vector<std::wstring> m_titres;
        long m_duree_en_seconde{ -1 };
        std::vector<std::wstring> m_resume{};
        std::vector<DateRecord> m_DatesVisionnage{};
    
        long m_NumeroEpisode{};
    
    
        //int m_numero{ -1 };
        long m_duree { -1 };
    
        //bool affichage_duree_actif = true;// false;
    
    private:
        const Episode& m_episode;
    };
    Non ! long m_NumeroEpisode{}; ===> m_???

    Exemple :
    Black Mirror.[2011-2023 Netflix]
    2011-12-04
    1x1.2018-12-30.txt
    L’Hymne national
    45 min
    Le Premier Ministre Michael Callow fait face à un terrible dilemme après le kidnapping de la bien-aimée Princesse Susannah.
    https://www.allocine.fr/series/fiche...rie=10855.html

    Ou :
    Kaleidoscope.[2023 Netflix]
    2023-01-01
    1x1.2023-01-03
    Jaune
    47 min
    Dans le quartier des diamants, Leo et sa nouvelle équipe cherchent de quoi financer un casse à plusieurs milliards : des bons au porteur gardés dans un coffre à New York.
    https://www.allocine.fr/series/fiche...rie=30107.html
    Mais de ___ !!!

    Exemple :
    Dr. STONE.[2019- Crunchyroll].Manga
    Ok ?

    Merci vraiment

  13. #1093
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Bonsoir,

    Je pense que vous devriez poser ces questions sur l'optimisation du référencement dans une section du forum plus adapter à votre problème.
    Si j'ai bien compris l'essence de votre problème.
    Oui, je sais !!! Mais, comment faire ?
    C'est une "technologie" WordPress, donc vraisemblablement sur un forum WordPress (le forum de l'éditeur de l'outil sera vraisemblablement en anglais).

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{ saison }...
    Vous avez ajouté un test pour ne pas planter dans votre cas de test : "Kaleidoscope.[2023 Netflix]".
    Mais votre jeu de test ne couvre qu'un cas du if (le cas "non").
    Vous devriez avoir des cas de test qui couvre le maximum de cas possible, donc la cas où ce "if" passe.

    Je trouve que votre code est horriblement complexe pour pas grand-chose.
    Par exemple le '&& file_content[0] != L"" ' de la ligne 7 de votre extrait ne sert à rien (ou il y a plus simple à faire).
    "if (m_NumeroEpisode != 0)" de la ligne 10 de votre extrait : ça sert à quoi ?
    etc...
    Les expressions régulières sont encore plus souple que votre fonction "find".(exemple : un épisode avec un ". " quelque part dans le titre.)


    Les constructeurs de "SequenceVisionnage" : c'est 100% OK.

    Non ! long m_NumeroEpisode{}; ===> m_???
    Pour moi, c'est Ok (faudra penser à homogénéiser le nommage, mais ça peut attendre).

    Votre fonction "SequenceVisionnage:rint(std::vector<std::wstring>&titres, int numero_sequence) const" est une putain d'usine à gaz.
    Pourquoi une telle complexité ???

    La fonction "Print(std::vector<std::wstring>& titres, long episode, int numero_sequence) const" : vous ne l'avez que déclarer dans le .h, il n'y a pas d'implémentation dans le .cpp.
    Lisez bien les warnings du compilateur, SVP.
    Pourquoi ajouter un paramètre à une fonction, quand la fonction peut retrouver cette valeur directement dans les champs de la classe ?

    Simplifiez votre code, SVP !!!

  14. #1094
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    La fonction "Print(std::vector<std::wstring>& titres, long episode, int numero_sequence) const" : vous ne l'avez que déclarer dans le .h, il n'y a pas d'implémentation dans le .cpp.
    Les écrans, la souris, le clavier et mon chaton !!!

    Ok !

    https://github.com/laurentbouleau/Exemple : Janvier 11 (30/01/2025)

    Après, Kaleidoscope.[2023 Netflix] pas de épisode comment Love, Death + Robots.[2019- Netflix].Animation !!!

    Merci

  15. #1095
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 12 (30/01/2025)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    struct InfosVisionnage
    {
    ...
        int m_numero{ -1 };
    ...
    };
     
    struct SequenceVisionnage
    {
    ...
        int m_numero{ -1 };
    ...
    };
    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
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{ saison }
    { 
    ...
        if (file_content.size() > 0 && file_content[0] != L"")
        {
            std::size_t pos;
            if (m_NumeroEpisode != 0)
            {
                pos = file_content[0].find(L". ");
                if (pos != wstring::npos)
                {
                    file_content[0] = file_content[0].substr(pos + 2);
                    m_numero = 1;
                }
                else
                {
                    m_numero = 0;
                }
            }
     
            m_titres = extraire_Titres_Depuis_UneLigne(file_content[0]);
        }
    ...
    }
     
    ...
     
    void SequenceVisionnage::Print(int numero_sequence) const
    {
        static std::vector<std::wstring> titres;
        static int numero;
        if (numero_sequence == 1)
        {
            titres = m_titres;
            numero = m_numero;
        }
     
        std::wstring wstr;
        std::wstring chiffre_str{};
        std::wstring duree_str;
        static std::wstring ch;
        long chiffre = Print_Titre_chiffre(numero_sequence);
     
        if (numero_sequence == 1)
        {
            // ???? problème
            if (numero == 1)
            {
                chiffre_str = std::to_wstring(m_episode.m_saison.m_numero) + m_keyColor[1] + L'x' + m_valuesColor + std::to_wstring(m_episode.m_numero) + m_keyColor[1] + L" : " + m_valuesColor;
                ch = chiffre_str;
            }
        }
        else
            chiffre_str = ch;
     
        if (titres.size() == 1)
        {
            wstr = m_keyColor[1] + titres[0] + m_valuesColor;
        }
        else
        {
            wstr = m_keyColor[1] + titres[0] + m_valuesColor + titres[1] + m_keyColor[1] + titres[2] + m_valuesColor;
        }
     
        if (numero_sequence == 1)
            duree_str = calcul_Duree_affichage(numero_sequence);
        else
            duree_str += L' ' + m_keyColor[1] + L'[' + m_valuesColor + L"bis" + m_keyColor[1] + L']' + m_valuesColor;
     
        std::wstring dates_str = m_keyColor[1] + L" : " + m_valuesColor + Print_Dates_de_visionnage();
     
        std::wstring resume_str;
     
        if (numero_sequence == 1)
        {
            resume_str += L"\r\n";
            for (auto r : m_resume)
                resume_str += r;
        }
        std::wcout << chiffre_str << wstr << duree_str << dates_str << resume_str << L"\r\n";
    }
    Ok ou pas ?

    Merci

  16. #1096
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    Bonsoir,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Saison::initialiser_Resume(fs::path const& cheminFichier)
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Saison::initialiser_Saison(std::filesystem::path const& cheminFichier)
    Exemple Kaleidoscope.[2023 Netflix] :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_resume = L"Un maître du braquage et son équipe tentent un casse épique et complexe de sept milliards de dollars, mais la trahison, la cupidité et d'autres facteurs sapent leur plan."
    Ok !

    Par contre :
    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 Saison::Print_Header()
    {
    ...
        std::wstring resume_str;
        if (m_serie.m_resume != m_resume)
        {
            for (auto r : m_resume)
                resume_str += r;
        }
        else
        {
            resume_str = stringFormatOneLine(m_resume.size() > 0 ? m_resume[0] : L"", 40 + 3 + 5, L"...", 3, m_keyColor[1] + L'(' + m_valuesColor + L"Bis" + m_keyColor[1] + L')' + m_valuesColor, 5);
        }
    ...
    }
    Problème !!!
    m_resume = L"" !!!

    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
    struct Saison
    {
    public:
        const Serie& m_serie;
        Saison(std::filesystem::path const& cheminFichier, const Serie& serie);
        Saison(Saison&& src) noexcept : m_serie{ src.m_serie }// the expression "arg.member" is lvalue
        {
            operator=(std::move(src));
        }
     
    ...
        std::vector<std::wstring> m_resume;
    ...
    private:
        Saison& operator=(Saison&& src) noexcept
        {
            if (&src != this)
            {
                for (auto& ep : src.m_liste_episodes)
                {
                    m_liste_episodes.emplace_back(Episode{ *this, std::move(ep) });
                }
                m_audiodescription = std::move(src.m_audiodescription);
                m_avec = std::move(src.m_avec);
                m_date_diffusee_a_partir_de = std::move(src.m_date_diffusee_a_partir_de);
                m_disney = std::move(src.m_disney);
                m_f_anneesDiffusion = std::move(src.m_f_anneesDiffusion);
                m_chaine = std::move(src.m_chaine);
                m_hors_saison = std::move(src.m_hors_saison);
     
                m_image = std::move(src.m_image);
                m_netflix = std::move(src.m_netflix);
                m_note = std::move(src.m_note);
     
                m_titres = std::move(src.m_titres);
                m_resume = std::move(src.m_resume);
     
                m_nombre_episodes = std::move(src.m_nombre_episodes);
                m_numero = std::move(src.m_numero);
            }
            return *this;
        }
    };
    ???

    Je suis crevé

    Merci

  17. #1097
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    Bonsoir,

    Ben, non !
    Non void Serie:: PostTraitement() ???

    J'en ai rien !!!

    https://github.com/laurentbouleau/Exemple : Janvier 13 (31/01/2025)

  18. #1098
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Remarques sur les codes "Janvier 11" et "Janvier 12" :
    Simplifier le code, ce n'est pas supprimer les rares trucs qui "fonctionnent".
    Exemple, le champ "m_NumeroEpisode" de la classe SequenceVisionnage, qui contenait le numéro de l'épisode qui correspond à la séquence de visionnage.
    Ce champ n'est pas strictement nécessaire, car on peut récupérer cette information via la référence de l'épisode depuis la séquence de visionnage.
    Mais pourquoi supprimer un truc qui fonctionne sans avoir pris la peine de tester si la "solution" de contournement fonctionne correctement dans tous les cas (ce qui n'est pas garantie avec la référence vers l'épisode) ?

    Vous "remplacez" le champ "m_NumeroEpisode" par un champ "m_numero" complètement foireux, car il ne veut rien dire de concret, et son initialisation depuis un objet "InfosVisionnage" montre que ce n'est pas une information "utile" qui porte un mauvais nom, mais vraiment une valeur "à la con".
    C'est une valeur "à la con" car le code du constructeur "InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier)" est inutilement horriblement ridiculement complexe.

    Ce n'est pas parce qu'un champ n'est plus affiché qu'il devient inutile.
    J'ai déjà indiqué maintes et maintes fois que ces classes ne sont pas des classes pour de l'affichage mais des classes "métier" pour structurer vos données (détection d'anomalies dans les données, implémentation de règle "métier" (comparaison, classement, etc..), etc...).


    "SequenceVisionnage:: Print(int numero_sequence)" :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void SequenceVisionnage::Print(/*std::vector<std::wstring>& titres, */int numero_sequence)
    C'est très bien, vous avez compris de vous-même que le paramètre "titres" était inutile, voire superfétatoire.


    Mais pourquoi tout ce bordel en début de fonction ??? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void SequenceVisionnage::Print(int numero_sequence) const
    {
        static std::vector<std::wstring> titres;
        static int numero;
        if (numero_sequence == 1)
        {
            titres = m_titres;
            numero = m_numero;
        }...
    Vous pouvez supprimer toutes ces lignes et directement utiliser les champs "m_titres" et "m_numero" (même si ce champ a un nom "à la con").

    Et le reste de la fonction est encore une complète usine à gaz !!!
    Pourquoi pas un code de la forme :
    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
    void SequenceVisionnage::Print(int numero_sequence) const
    {
        if (m_titres.size() == 1)
        {
            wstr = m_keyColor[1] + m_titres[0] + m_valuesColor;
        }
        else if (m_titres.size() > 2)
        {
            wstr = m_keyColor[1] + m_titres[0] + m_valuesColor + m_titres[1] + m_keyColor[1] + m_titres[2] + m_valuesColor;
        }
     
        if (numero_sequence == 1)
        {
            chiffre_str =...
            ...
        }
        else
        {
            chiffre_str =...
            ...
        }
     
        std::wcout << chiffre_str << wstr << duree_str << dates_str << resume_str << L"\r\n";
    }
    ? (je pense que c'est encore plus simplifiable, mais vous ne nous expliquez pas comment est structuré votre affichage, et votre code actuel est un capharnaüm)

    Simplifiez votre code, SVP !!!

    "InfosVisionnage::InfosVisionnage" :
    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
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{ saison }
    { 
    ...
    if (file_content.size() > 0 && file_content[0] != L"")
    {
        std::size_t pos;
        if (m_NumeroEpisode != 0)
        {
            pos = file_content[0].find(L". ");
            if (pos != wstring::npos)
            {
                file_content[0] = file_content[0].substr(pos + 2);
                m_numero = 1;
            }
             else
                {
                     //= file_content[0].substr(pos + 2);
                    //if (file_content[0][0]);
                    //if (!std::isdigit(file_content[0][0]))
                    //    ;
                }
        }
     
        m_titres = extraire_Titres_Depuis_UneLigne(file_content[0]);
    ...
    }
    ...
    }
    (Oh !!! le beau "+ 2" en dur bien crade)
    Que vous n'arriviez pas à remplir le "else", c'est que votre code est bien trop compliqué ou que vous êtes perdu.
    Simplifiez votre code, SVP !!!
    Exemple les conditions dans les if atrocement complexe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (file_content.size() > 0 && file_content[0] != L"")
    Ok pour 'file_content.size() > 0', c'est logique.
    Mais pourquoi? 'file_content[0] != L""' ?
    Dégagez-moi ces machins !!!
    Simplifiez votre code, SVP !!!
    Le bidule avec 'file_content[0].find(L". ")', c'est pour détecter très vraisemblablement le numéro d'épisode qui peut apparaitre en première ligne du fichier.
    (Mantra : Nous, on ne comprend pas pourquoi vous ne vous simplifiez pas la vie avec une arborescence des fichiers plus simple. (des formats de fichiers plus simples AUSSI) )
    Si vous utilisiez des noms explicites, cette bidouille serait elle aussi plus explicite.

    Puis vous changez votre code en :
    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
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{ saison }
    { 
    ...
    if (file_content.size() > 0 && file_content[0] != L"")
    {
        std::size_t pos;
        if (m_NumeroEpisode != 0)
        {
            pos = file_content[0].find(L". ");
            if (pos != wstring::npos)
            {
                file_content[0] = file_content[0].substr(pos + 2);
                m_numero = 1;
            }
            else
            {
                m_numero = 0;
            }
        }
     
        m_titres = extraire_Titres_Depuis_UneLigne(file_content[0]);
    }
    ...
    }
    C'est toujours pas plus simple, et vous utilisez un champ "m_numero", avec un nom "à la con" et avec une valeur encore plus "à la con" !!!

    Avec des noms plus explicites, même un format de fichier complexe reste simple à décoder :
    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
     
        if (file_content.size() > 0 )
        {
            const std::wregex numeroPlusTitres_rg{ L"(?:(\\d)+\\. )?(.*)" };
            std::wsmatch titles_match;
            std::regex_match(file_content[0], titles_match, numeroPlusTitres_rg);
     
            if (titles_match[1].matched)
            {
                int numeroDansFichier = std::stoi(titles_match[1]);
                if (numeroDansFichier != m_NumeroEpisode)
                {
                    std::wstring message = L"Le fichier " + nomFichier + L" contient un numéro d'épisode différent de celui dans son nom.";
                    OutputDebugStringW(message.c_str());
                }
            }
     
            std::wstring titres = titles_match[2];
            m_titres = extraire_Titres_Depuis_UneLigne(titres);
        }
    La gestion d'une ligne vide comme première ligne n'est pas faite ici, mais elle n'a pas à être faite ici, mais dans la fonction "extraire_Titres_Depuis_UneLigne", qui le fait très très mal.
    Plutôt que de complexifier votre code, corrigez-le au bon endroit.
    Simplifiez votre code, SVP !!!

  19. #1099
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 428
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : France, Val de Marne (Île de France)

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 428
    Par défaut
    Remarques sur les codes "Janvier 13" (enfin la 3ème version sur les 4 versions qui ont le même non , faites un effort PUTAIN!) :

    serie.h :
    Vous avez dégagé le champ "m_numero" des constructeurs de la classe SequenceVisionnage, c'est très bien, mais c'est de la classe ENTIERE qu'il faut dégagé cette anomalies !!!
    En plus vous supprimer "définitivement" le champ "m_NumeroEpisode", celui qui a un sens explicite. Pourquoi vous vous saboter ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
       // void Print(int numero_sequence) const;
     
        void Print(std::vector<std::wstring>&titres, int numero_sequence) const;
    Vous avez donc sabordé la seule chose cool de vos 10 dernières versions.
    Pourquoi vous vous saboter ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        const void Print_Saison(Saison saison);
    Vous vous foutez de ma gueule ???
    DEGAGEZ-MOI CE CONST !!!
    C'est ça qu'il faut :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void Print_Saison(Saison saison) const;
    Mais en fait, elle sert à rien, cette fonction, donc supprimez cette cochonnerie.
    (Mais gardez à l'esprit mettre le const, SVP)

    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
        /*bool affichage_annees_actif = true;
        bool affichage_audiodescription_actif = true;
        bool affichage_avec_actif = true;
        bool affichage_avec_etc_actif = true;
        bool affichage_chaine_actif = true;
        bool affichage_catalogue_actif = true;
        bool affichage_creee_par_actif = true;
        bool affichage_disney_sj_actif = true;
        bool affichage_duree_actif = true;// false;
        bool affichage_episode_titre_actif = true;
        bool affichage_en_relation_avec_actif = true;
        bool affichage_image_actif = true;
        bool affichage_genres_actif = true;
        bool affichage_nationalite_actif = true;
        bool affichage_netflix_sj_actif = true;
        bool affichage_note_actif = true;// false;
        bool affichage_resume_actif = true;
        //bool affichage_saison_actif = true;
        bool affichage_saison_date_etc_actif = true;
        bool affichage_saisons_actif = true;
        bool affichage_serie_actif = true;
        bool affichage_sj_actif = true;
        bool affichage_sous_genre_actif = true;
        bool affichage_sur_actif = true; // 
        bool affichage_titres_actif = true;
        bool affichage_titres_originaux_actif = true;
        bool affichage_x_sj_actif = true;
        */
    Sans commentaire, c'est une classe métier !!!
    Virez-moi ces champs à la con.

    serie.cpp :
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{ saison }
    {
    ...
    if (file_content.size() > 0 && file_content[0] != L"")
    {
    std::size_t pos;
    if (m_NumeroEpisode != 0)
    {
    pos = file_content[0].find(L". ");
    file_content[0] = file_content[0].substr(pos + 2);
    }v

    m_titres = extraire_Titres_Depuis_UneLigne(file_content[0]);
    }
    ...
    }
    Là, carrément, on ne gère plus le cas où le fichier ne contient pas le numéro d'épisode au début du fichier. Cas le plus fréquent dans votre jeu de test. Tu m'étonnes que :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    { // "{" : marche pas !!!
    Utilisez le débuggeur si vous ne comprenez pas ce qui se passe.
    Ne faites pas des modifications au pif !!!
    Regardez le code que je vous ai posté dans ma précédente réponse sur cette partie, pour voir que des noms de variables simples mais correctes, ça change tous.

    Le code de la fonction "SequenceVisionnage:: Print(std::vector<std::wstring>&titres, int numero_sequence) const" est encore plus complexe qu'avant, toujours aussi INUTILEMENT.
    Mettez à plat votre machin.
    Ecrivez en français ce que devrait faire "SequenceVisionnage:: Print" (et sans ce putain de paramètre "titres").
    Donnez-nous votre texte, et on verra comment l'implémenter SIMPLEMENT.

    Vous avez supprimé la fonction "Serie:: PostTraitement()", pourquoi ?
    Elle fonctionnait "trop simplement" ???
    Je vous accorde qu'elle était lancée à un moment pas très pertinent dans votre code.
    Mais si elle a un problème, c'est à son appel, pas dans son implémentation.
    On aurait peut-être l'appeler "PostInitialisation" à la place de "PostTraitement", mais c'est pas une raison pour la supprimer !!!
    Vous avez dégagé toute l'implémentation de la fonction "Serie:: Print_Saisons".
    Pourquoi vous vous saboter ???

    film.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        const void Print_Date_de_Reprise();
        const void Print_Date_de_Sortie();
    Vous vous foutez de ma gueule ???
    DEGAGEZ-MOI CES CONST !!!
    A la rigueur, mettez-les à la fin, mais pas au début de la signature de la fonction.

    film.cpp:
    "Film:: Print_Date_de_Sortie" et "Film:: Print_Date_de_Reprise", tout ça pour supprimer des vérifications pour que cela ne pète pas à la gueule dans des cas loin d'être exceptionnels.
    Pourquoi vous vous saboter ???

    Exemple.cpp:
    Bon, c'est toujours aussi bordélique.
    Vous nous collez des chemins en dur qui ne fonctionnent que sur votre machine, tout ça pour chercher un malheureux répertoire "Only Murders in the Building.[2021- Disney+]" qu'on n'a même pas dans Github.
    GG
    Je vous ai déjà proposé un code simple, sans valeur en dur, qui fonctionne avec le jeu de test fourni dans Github, et qui scanne l'ensemble du jeu de test.
    Pourquoi vous vous saboter ???
    Donc, je ne peux rien tester.
    GG

    Là, c'est un retour de manivelle qui m'exaspère.
    On revient sur plus d'un mois de correction que vous saccagez.
    Si vous ne comprenez pas les choses, écrivez-le !!!

    Après avoir bidouillé votre "Exemple.cpp" des enfers pour tester le "nouveau" cas : ""Love, Death + Robots.[2019- Netflix].Animation".
    J'ai vu que "m_titres" était mal initialisé dans les "SequenceVisionnage" qui se sont fait déplacer.
    C'est parce que c'est un tableau.
    Il faut faire exactement comme pour le champ "m_liste_sequence_visionnages_ordonnee_chronologiquement" de la classe Episode.
    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
    struct SequenceVisionnage
    {
        SequenceVisionnage(const Episode& episode, const SequenceVisionnage& src) :
            m_episode{ episode }
        {
            operator=(src);
        };
        SequenceVisionnage(const Episode& episode, const InfosVisionnage& info_vis) :
            m_episode{ episode }
        {
            operator=(info_vis);
        };
        boolean operator==(const SequenceVisionnage& rhs) const { return this == &rhs; };
    ...
    private:
        SequenceVisionnage& operator=(const SequenceVisionnage& src)
        {
            if (&src != this)
            {
                m_titres.clear();
                for (auto const& titre : src.m_titres)
                {
                    m_titres.emplace_back(titre);
                }
                m_streaming = src.m_streaming;
                m_duree_en_seconde = src.m_duree_en_seconde;
                m_resume = src.m_resume;
                m_DatesVisionnage = src.m_DatesVisionnage;
            }
            return *this;
        }
     
        SequenceVisionnage& operator=(const InfosVisionnage& src)
        {
            m_titres.clear();
            for (auto const& titre : src.m_titres)
            {
                m_titres.emplace_back(titre);
            }
            m_streaming = src.m_streaming;
            m_duree_en_seconde = src.m_duree_en_seconde;
            m_resume = src.m_resume;
            m_DatesVisionnage = src.m_DatesVisionnage;
            return *this;
        }
    ...
    L'affichage n'est pas identique car beaucoup des fichiers sont vides.
    (Mantra : Nous, on ne comprend pas pourquoi vous ne vous simplifiez pas la vie avec une arborescence des fichiers plus simple. (des formats de fichiers plus simples AUSSI) )
    Après, votre implémentation de "SequenceVisionnage:: Print(std::vector<std::wstring>& titres, int numero_sequence)" qui mélange "titres" et "m_titre" est bogué jusqu'à la trogne.
    Arrêtez de tous mélanger dans votre code si inutilement complexe, SVP.

    Quand vous ne comprenez pas, demandez, ne revenez pas un mois en arrière, SVP.

  20. #1100
    Membre très actif Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    782
    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 : 782
    Par défaut
    J'en ai marre !!! Chacun fois !!!

+ 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