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. #1061
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 01 (01/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
    void Saison::initialiser_Saison(std::filesystem::path const& cheminFichier)
    {
        std::vector<std::wstring> saison = lire_fichierTxt(cheminFichier.wstring(), { L"\n" });
        assert(saison.size() > 1);
        const int s = std::stoi(saison[0]);
        try
        {
            if(s > -1 && s < 100)
            //if (s < -1 && s > 100)
                throw std::underflow_error("0 <= et 100 >= des chiffres !!!");
        }
        catch (const exception& e)
        {
            std::cerr << "Exception caught: " << e.what() << std::endl;
        }
        m_nombre_episodes = s;
        m_resume = std::vector<std::wstring>(std::next(saison.begin()), saison.end());
    }
    Marche pas pour : length_error, logic_error, out_of_range, overflow_error, range_error, runtime_error, underflow_error !!!
    Et if(s > -1 && s < 100) ou if (s < -1 && s > 100) !!!

    Compliqué !!!

    Merci

  2. #1062
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    Pourquoi vous vous compliquez la vie ???
    Quel est l'intérêt de lancer une exception que l'on capture dans la même fonction ?

    Si vous vous prenez la tête à lancer des exceptions, faites en sorte que leur message soit "explicite".

    Pourquoi 0 serait un nombre d'épisode valide mais pas 100 ? (Les tests du code et le message d'erreur n'ont même pas les mêmes conditions et sont complètement "illogiques")
    Pourquoi un "std::underflow_error" ???



    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
    class FileFormatException : public std::runtime_error {
    public:
        explicit FileFormatException(const std::string& message)
            : std::runtime_error(message) {}
    };
     
    ...
     
    void Saison::initialiser_Saison(std::filesystem::path const& cheminFichier)
    {
        std::vector<std::wstring> saison = lire_fichierTxt(cheminFichier.wstring(), { L"\n" });
        if (saison.size() < 2) throw FileFormatException("Le fichier " + cheminFichier.generic_u8string() + " n'a pas le nombre de ligne nécessaire pour une description de saison : " + std::to_string(saison.size()));
     
        try
        {
            m_nombre_episodes = std::stoi(saison[0]);
        }
        catch (exception& ex)
        {
            throw FileFormatException("Le fichier " + cheminFichier.generic_u8string() + " n'a pas le nombre d'épisode de la saison en première ligne : " + ex.what());
        }
     
        if(m_nombre_episodes<0 || m_nombre_episodes>99) throw FileFormatException("Le fichier " + cheminFichier.generic_u8string() + " n'a pas un nombre d'épisode de saison compris entre 0 et 99 : " + std::to_string(m_nombre_episodes));
     
        m_resume = std::vector<std::wstring>(std::next(saison.begin()), saison.end());
    }
    EDIT :
    Pensez à avoir de quoi tester le nouveau code dans le jeu de test, SVP.

  3. #1063
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 02 (02/01/2025)

    Ok !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class FileFormatException : public std::runtime_error
    {
    public:
        explicit FileFormatException(const std::string& message)
            : std::runtime_error(message) {}
    };
    Ben, oui !!!
    Comment fait ???

    Merci beaucoup

  4. #1064
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    Quelle est la question ?

    C'est pas la première classe qui n'est pas dans sa paire de fichier ".h/.cpp", une de plus une de moins, on s'en fout, pour l'instant.

    Toujours pas de quoi tester le nouveau code.
    (Faut renommer un fichier et modifier son contenu pour que cela corresponde aux nouvelles spécifications)

  5. #1065
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    Oui, ok !

    Maintenant : Saison !!!

  6. #1066
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Saison/ : Janvier 01 (03/01/2025)

    std::list : ok !

    Comment faire ?

    Merci

  7. #1067
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    https://github.com/laurentbouleau/Saison/ : Janvier 01 (03/01/2025)
    Pourquoi un nouveau dépôt GitHub ???

    std::list : ok !
    Pourquoi faire ?

    Comment faire ?
    Comment faire QUOI ???

  8. #1068
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    Pourquoi un nouveau dépôt GitHub ???
    Parce que ! Ben, oui !!! xx.txt ===> Saison.txt !

    Pourquoi faire ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::list<std::wstring> racines = { L"e:\\Séries.[]\\+++++\\" };
    !!!

    Comment faire QUOI ???
    J'ai oublié !!!

  9. #1069
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    Parce que ! Ben, oui !!! xx.txt ===> Saison.txt !
    Avec un dépôt GitHub, on a tout ce qui est nécessaire pour "comprendre" vos difficultés.
    Avec 2, et sans même prévenir dans un "readme.md", vous devez avoir les 2 dépôts de descendu, les mettre dans des endroits compatibles, "corriger" une des solutions- pour contenir "tous" les projets, réfléchir à comment articuler ces multiples projets, etc...
    Enfin, bref, que des emmerdes sans aucun putain d'avantages.

    Laissez tomber cette connerie de dépôt supplémentaire.
    Faites les modifications nécessaires dans le dépôt "Exemple". (qui est déjà un dépôt "spinoff" mais avec un but "clair".)

    Si vous avez peur que ce "choix" soit trop lourd et avoir la possibilité de revenir en arrière, utilisez les "branches" dans un même dépôt.

    Vous pouvez très bien utiliser une std::list dans "Exemple.cpp" à la place du std::vector. Il faut juste un peu changer la nature de la boucle (boucle que je vous avez déjà demandé de faire (et aussi fourni), pour passer systématiquement tous les "tests").

  10. #1070
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    Bonsoir,

    Au quand : marche pas !!!
    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
        if (L"Saison.txt" == racine)
        {
            //std::list<std::wstring> racines = { L"e:\\Séries.[]\\+++++\\" };
            found = true;
            //std::vector<std::wstring> racines = {
            std::vector<std::filesystem::path> racines
            {
                L"h:\\Séries.[]\\",
                L"h:\\Séries.[]\\-\\",
                L"h:\\Séries.[]\\+\\",
                L"h:\\Séries.[]\\++\\",
                L"h:\\Séries.[]\\+++\\",
                L"h:\\Séries.[]\\+++\\",
                L"h:\\Séries.[]\\+++++\\"
            };
            while(racines.size() != 0)
            {
                auto racine = racines[0];
                auto nomDossier = racine.wstring();
                //assert(nomDossier.length() > 0 && L"Nom de dossier vide");
                std::wcout << L"nomDossier=[" << nomDossier << L"]" << std::endl;;
    //            for(auto& sous_dossier : fs::directory_iterator(nomDossier))
                for(const auto& sous_dossier : nomDossier)
                {
                    /*if (!nomDossier.empty())
                    {
                        std::wcout << L"Ok --->" << sous_dossier << L", " << nomDossier << std::endl;
                        //if (racine.filename().wstring() == L"Only Murders in the Building.[2021- Disney+]")
    //                    if(sous_dossier.filename().wstring() == L"Only Murders in the Building.[2021- Disney+]")
                        if (nomDossier == L"Only Murders in the Building.[2021- Disney+]")
                            std::wcout << L"bla : " << sous_dossier << std::endl;
     
                    }
                    else
                        std::wcout << L"pas ok ! --->" << sous_dossier << L", " << nomDossier << std::endl;
                        */
     
                    if(nomDossier == L"Only Murders in the Building.[2021- Disney+]")
                        std::wcout << L"bla : " << sous_dossier << std::endl;
     
     
                    //std::wcout << L"{" << sous_dossier << L"}" << std::endl;
                    //if(L"#" == sous_dossier)
                //    if (sous_dossier.is_regular_file())
         //           if (nomDossier.is_regular_file())
                    /* {
                        std::wcout << L"    ---> [" << sous_dossier << L']' << std::endl;
                        std::wcout << L"    ---> [" << nomDossier << L']' << std::endl;
                    }*/
                }
                /*if (fs::is_directory(nomDossier))
                {
                    std::wcout << L"    ===> [" << nomDossier << L']' << std::endl;
                    std::wcout << L"    ===> [" << racine << L']' << std::endl;
                    for (const auto& entry_saison : fs::directory_iterator(nomDossier))
                    {
                        if (nomDossier == L"Only Murders in the Building.[2021- Disney+]")
                            std::wcout << L"Only Murders in the Building.[2021- Disney+]" << std::endl;
     
                    }
                    if (nomDossier == L"Only Murders in the Building.[2021- Disney+]")
                        std::wcout << L"Only Murders in the Building.[2021- Disney+]" << std::endl;
                }*/
                std::wcout << L"===> ok !!! (" << racine << L")" << std::endl;
                racines.erase(racines.begin());
            }
        }
    https://github.com/laurentbouleau/Exemple : Janvier 03 (09/01/2025)
    Que faire ???

  11. #1071
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    Je ne comprends absolument pas votre "raisonnement".

    Une légère modification du wmain "initial" pour faire la boucle et c'est réglé :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    int wmain(int argc, wchar_t* argv[])
    {
    
        //int i = 0;
        //
        init();
    
        //hOut = GetStdHandle(STD_OUTPUT_HANDLE);
        if (hOut == INVALID_HANDLE_VALUE)
        {
            return GetLastError();
        }
        //    DWORD dwMode = 0;
        if (!GetConsoleMode(hOut, &dwMode))
        {
            return GetLastError();
        }
        dwMode |= ENABLE_VIRTUAL_TERMINAL_PROCESSING;
        if (!SetConsoleMode(hOut, dwMode))
        {
            return GetLastError();
        }
    
        //    CONSOLE_SCREEN_BUFFER_INFO csbiInfo;
        GetConsoleScreenBufferInfo(hOut, &csbiInfo);
    
        AffichagePersonnalisation person = getCurrentAffichagePersonnalisation();//fonction à implémenter pour récupérer la configuration de personnalisation de l'utilisateur.
    
        std::wstring t;
        const wchar_t* p{ L".\\Exemple.txt" };
        std::filesystem::path filePath(p);
        try
        {
            t = lire_fichierTxt(filePath);
        }
        catch (runtime_error const& exception)
        {
            std::wcout << L"Erreur : " << exception.what() << std::endl;
        }
        
        std::list<std::wstring> racines{ t };
    
        while (racines.size() != 0)
        {
            auto racine = *racines.begin();
    
            for (const auto& entry : fs::directory_iterator(racine))
            {
    
                if (entry.is_directory())
                {
                    std::wcout << L"racine=[" << entry << L']' << std::endl;
                    fs::path r = entry;
                    auto nomDossier = r.filename().wstring();
                    assert(nomDossier.length() > 0 && L"Nom de dossier vide");
    
                    bool found = false;
    
                    std::size_t pos, pos2;
                    const std::wstring d_p1 = L".(";
                    pos = nomDossier.find(d_p1);
                    const std::wstring d_p2 = L")";
                    pos2 = nomDossier.find(d_p2);
                    const std::size_t c_annee_size = 4;
                    const std::size_t c_mois_size = 2;
                    const std::size_t c_jour_size = 2;
                    const std::size_t c_tiret_size = 1;
    
                    std::wregex nomDossier_pattern{ L"(.+?)(?:\\.\\((?:(\\d{4})\\-(\\d{2})\\-(\\d{2})\\s*([^\\)]*))\\))?(?:\\.(.+))?$" };
    
                    std::wsmatch match;
                    if (!found && pos > 2 && pos2 > (pos + c_annee_size + c_tiret_size + c_mois_size + c_tiret_size + c_jour_size) && pos != std::wstring::npos && pos2 != std::wstring::npos &&
                        std::regex_match(nomDossier, match, nomDossier_pattern))
                    {
                        static Film film(entry);
                        found = true;
                        for (const auto& entry_film : fs::directory_iterator((film.getRacine())))
                        {
                            if (entry_film.is_regular_file())
                            {
                                film.initialiser_Fichier(entry_film);
                            }
                        }
                        film.AffichagePersonnaliser(person);
                        film.Print();
                    }
    
                    const std::wstring d_p3 = L".[";
                    pos = nomDossier.find(d_p3);
                    const std::wstring d_p4 = L"]";
                    pos2 = nomDossier.find(d_p4);
                    std::wregex serie_pattern{ L"^(.+?)(?:\\.\\[(\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\d{4}|\\d{4}\\-\\s|\\d{4}\\s|\\d{4})([^\\]]*)\\])(?:\\.(.+))?$|^(.+)(?:\\.(.+))$" };
                    std::wsmatch match2;
                    if (!found && pos > 2 && pos2 > (pos + c_annee_size) && pos != std::wstring::npos && pos2 != std::wstring::npos && std::regex_match(nomDossier, match2, nomDossier_pattern))
                    {
                        static Serie serie(entry);
                        found = true;
                        for (const auto& entry_serie : fs::directory_iterator((serie.getRacine())))
                        {
                            if (entry_serie.is_regular_file())
                            {
                                serie.initialiser_Fichier(entry_serie);
                                continue;
                            }
                            if (fs::is_directory(entry_serie))
                            {
    
                                serie.saisons.push_back({ entry_serie, serie });
                                auto& saison = serie.saisons.back();
                                for (const auto& entry_saison : fs::directory_iterator(entry_serie))
                                {
                                    if (entry_saison.is_regular_file())
                                    {
                                        saison.initialiser_Fichier(entry_saison);
                                    }
                                }
                            }
                        }
                        serie.AffichagePersonnaliser(person);
                        serie.Print();
                    }
    
                    //ajouter ici tout le code nécessaire à vos cas particuliers
                    if (!found)racines.push_back(entry.path());
                }
            }
            racines.pop_front();
        }
        
    
        std::wcout << L"\r\n";
        std::wcout << L"Ok !!!" << L"\r\n";
        return EXIT_SUCCESS;
    }
    (code qu'on peut largement simplifié.)

  12. #1072
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    Non ! Après std::list<std::wstring> !!!

    https://github.com/laurentbouleau/Exemple : Janvier 04 (10/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
    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
    void rechercher_saisçon()
    {
        //std::list<std::wstring> racines = { L"e:\\Séries.[]\\+++++\\" };
        //std::vector<std::wstring> racines = {
        std::vector<std::filesystem::path> racines
        {
            L"h:\\Séries.[]\\",
            L"h:\\Séries.[]\\-\\",
            L"h:\\Séries.[]\\+\\",
            L"h:\\Séries.[]\\++\\",
            L"h:\\Séries.[]\\+++\\",
            L"h:\\Séries.[]\\+++\\",
            L"h:\\Séries.[]\\+++++\\"
        };
        while (racines.size() != 0)
        {
            auto racine = racines[0];
            auto nomDossier = racine.wstring();
            //assert(nomDossier.length() > 0 && L"Nom de dossier vide");
            std::wcout << L"nomDossier=[" << nomDossier << L"]" << std::endl;;
            //            for(auto& sous_dossier : fs::directory_iterator(nomDossier))
            for (const auto& sous_dossier : nomDossier)
            {
                /*if (!nomDossier.empty())
                {
                    std::wcout << L"Ok --->" << sous_dossier << L", " << nomDossier << std::endl;
                    //if (racine.filename().wstring() == L"Only Murders in the Building.[2021- Disney+]")
    //                    if(sous_dossier.filename().wstring() == L"Only Murders in the Building.[2021- Disney+]")
                        if (nomDossier == L"Only Murders in the Building.[2021- Disney+]")
                            std::wcout << L"bla : " << sous_dossier << std::endl;
     
                    }
                    else
                        std::wcout << L"pas ok ! --->" << sous_dossier << L", " << nomDossier << std::endl;
                        */
     
                if (nomDossier == L"Only Murders in the Building.[2021- Disney+]")
                    std::wcout << L"bla : " << sous_dossier << std::endl;
     
     
                //std::wcout << L"{" << sous_dossier << L"}" << std::endl;
                //if(L"#" == sous_dossier)
            //    if (sous_dossier.is_regular_file())
     //           if (nomDossier.is_regular_file())
                /* {
                    std::wcout << L"    ---> [" << sous_dossier << L']' << std::endl;
                    std::wcout << L"    ---> [" << nomDossier << L']' << std::endl;
                }*/
            }
            /*if (fs::is_directory(nomDossier))
            {
                std::wcout << L"    ===> [" << nomDossier << L']' << std::endl;
                std::wcout << L"    ===> [" << racine << L']' << std::endl;
                for (const auto& entry_saison : fs::directory_iterator(nomDossier))
                {
                    if (nomDossier == L"Only Murders in the Building.[2021- Disney+]")
                        std::wcout << L"Only Murders in the Building.[2021- Disney+]" << std::endl;
     
                }
                if (nomDossier == L"Only Murders in the Building.[2021- Disney+]")
                    std::wcout << L"Only Murders in the Building.[2021- Disney+]" << std::endl;
            }*/
            std::wcout << L"===> ok !!! (" << racine << L")" << std::endl;
            racines.erase(racines.begin());
        }
    }
     
    ...
        bool found = false;
        if (L"Saison.txt" == racine)
        {
            found = true;
            rechercher_saisçon();
        }
    Je suis fatigué !!! J'en ai marre !!! Pourquoi ???

    Merci d'avance !!!

  13. #1073
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    Non ! Après std::list<std::wstring> !!!
    Le fait que "racines" soit une std::list et pas un std::vector, c'est un détail.
    Avec ces 2 types, la logique reste la même.
    C'est juste qu'avec des std::list, c'est plus logique et plus rapide.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    L"h:\\Séries.[]\\"
    ...
    Vous nous collez dans les pattes des chemins qui sortent du dépôt GitHub, ça ne fonctionnera donc que chez vous.
    Le fait que "Exemple.txt" contient un chemin relatif est là pour ne pas "sortir" du dépôt.

    Vous rajoutez des couches et des couches de complexité (Exemple.txt + "const std::vector<std::wstring> racines" + test sur la valeur de racine + rechercher_saison + "std::vector<std::filesystem::path> racines") alors qu'un simple fichier "Exemple.txt" correctement rempli et une simple boucle comme dans le code que j'ai posté fait l'affaire.
    Pourquoi vous vous prenez la tête ???

    Pourquoi ne pas partir de "mon" code simple plutôt que de vôtre usine à gaz ? (faudrait peut-être modifier un peu l'arborescence des fichiers dans le dépôt)

  14. #1074
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 05 (12/01/2025)
    Marche pas !!!
    Voilà !!!

    Nom : Capture d’écran 2025-01-12 122552.png
Affichages : 24
Taille : 23,1 Ko

  15. #1075
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    Utilisez le débuggeur.

    Il vous montre, via la pile d'appel, que c'est la ligne suivante qui déconne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    wcsftime(date_string, 18, L"%d/%m/%Y", &m_date_de_reprise);
    dans la fonction "const void Film:: Print_Date_de_Reprise()" (ET VIREZ-MOI CES "const void", BORDEL !!!)

    "m_date_de_reprise" est initialisé à "0" au moment de la construction de l'objet de classe Film, ce qui n'est pas une date valide.
    Pour que ce champ soit "correctement" initialisé, il faut qu'un fichier "Date de reprise.txt" soit "traité" dans le répertoire du film.
    Il n'y en a pas dans le répertoire ".\Avatar 2 - la voie de l'eau.(2022-12-14)".
    Vous devez donc gérer correctement le cas où un film n'a pas de date de reprise.

    Ça ne "marche" pas parce que vous avez travaillé un peu comme une taupe.
    Vous avez fait des circonvolutions pour ne traiter que le cas qui vous intéressait sur le moment ; en laissant derrière les cas simples à régler.
    Je vous ai un peu forcer la main à reprendre tous les cas, car c'est un moyen fiable de ne pas générer des régressions.

    Votre jeu de test doit fonctionner sur tous les cas, sauf le dernier, qui correspond au problème en cours.
    Mais avec votre stratégie d'évitement, vous avez plein de cas dans le jeu de test qui ont peut-être fonctionnés à un moment mais qui ont été potentiellement cassés par vos développements postérieurs.
    Donc prenez le temps de corriger tous ces détails que votre jeu de tests actuel permet de détecter et de corriger.

    C'est en suite qu'il faut reprendre le développement de la nouvelle fonctionnalité, pour ne pas accumuler les régressions et ne pas faire de mauvais choix sans s'en rendre compte rapidement.

  16. #1076
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    Si vous bloquez pour "correctement" gérer ces dates :

    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
    // ######################################################################################################################################################
    // #                                                                                                                                                    #
    // # void Film::Print_Date_de_Reprise()                                                                                                           #
    // #                                                                                                                                                    #
    // ######################################################################################################################################################
    
    void Film::Print_Date_de_Reprise()
    {
        if (m_date_de_reprise.tm_mday !=0)
        {
            wchar_t date_string[22];
            std::wstring wstr;
            wcsftime(date_string, 18, L"%d/%m/%Y", &m_date_de_reprise);
            wstr = date_string;
            //Console_Lire(keyColor[0] + L"Date de reprise : " + valuesColor + wstr.substr(0, 2) + keyColor[0] + L'/' + valuesColor + wstr.substr(3, 2) + keyColor[0] + L'/' + valuesColor + wstr.substr(6, 4), 0, 19);
            //int i = Console_Lire_txt(keyColor[0] + L"Date de reprise : " + valuesColor + wstr.substr(0, 2) + keyColor[0] + L'/' + valuesColor + wstr.substr(3, 2) + keyColor[0] + L'/' + valuesColor + wstr.substr(6, 4), 0, 19);
            std::wcout << m_keyColor[0] + L"Date de reprise : " + m_valuesColor + wstr.substr(0, 2) + m_keyColor[0] + L'/' + m_valuesColor + wstr.substr(3, 2) + m_keyColor[0] + L'/' + m_valuesColor + wstr.substr(6, 4) + L"\r\n";
        }
    }
    
    // ######################################################################################################################################################
    // #                                                                                                                                                    #
    // # void Film::Print_Date_de_Sortie()                                                                                                            #
    // #                                                                                                                                                    #
    // ######################################################################################################################################################
    
    void Film::Print_Date_de_Sortie()
    {
        if (m_date_de_sortie.tm_mday != 0)
        {
            wchar_t date_string[22];
            std::wstring wstr;
            wcsftime(date_string, 14, L"%d/%m/%Y", &m_date_de_sortie);
            wstr = date_string;
            //Console_Lire(keyColor[0] + L"Date de sortie : " + valuesColor + wstr.substr(0, 2) + keyColor[0] + L'/' + valuesColor + wstr.substr(3, 2) + keyColor[0] + L'/' + valuesColor + wstr.substr(6, 4), 0, 18);
            //int i = Console_Lire_txt(keyColor[0] + L"Date de sortie : " + valuesColor + wstr.substr(0, 2) + keyColor[0] + L'/' + valuesColor + wstr.substr(3, 2) + keyColor[0] + L'/' + valuesColor + wstr.substr(6, 4), 0, 18);
            std::wcout << m_keyColor[0] + L"Date de sortie : " + m_valuesColor + wstr.substr(0, 2) + m_keyColor[0] + L'/' + m_valuesColor + wstr.substr(3, 2) + m_keyColor[0] + L'/' + m_valuesColor + wstr.substr(6, 4) + L"\r\n";
        }
    }

  17. #1077
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    Non ! Film ou Série !!!

    Exemple :
    Andror ou Avater 2 ou Dr. Stone, etc...
    Ok !!!

    Merci !!!

  18. #1078
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 294
    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 294
    Points : 12 535
    Points
    12 535
    Par défaut
    Non ! Film ou Série !!!

    Exemple :
    Andror ou Avater 2 ou Dr. Stone, etc...
    Je comprend pas la question.

    C'est le format du nom du répertoire qui indique si c'est un Film ou une Série, non ?

  19. #1079
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    Un seul(e) film ou série !!!

  20. #1080
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    717
    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 : 717
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Janvier 06 (13/01/2025)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void Film::Print_Date_de_Reprise()
    void Film::Print_Date_de_Sortie()

+ 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, 17h33
  2. probléme avc console.readline()
    Par dv-2008 dans le forum VB.NET
    Réponses: 7
    Dernier message: 10/03/2008, 01h33
  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, 10h20
  4. Problème avc une requête
    Par Raiga dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 30/06/2007, 19h36
  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, 15h50

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