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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 139
    Points : 12 239
    Points
    12 239
    Par défaut
    En Debug ;
    1>cl : ligne de commande error D8016: options de ligne de commande '/ZI' et '/Gy-' non compatibles
    1>Génération du projet "Exemple.vcxproj" terminée -- ÉCHEC.


    Vous avez mis "Non (Gy-)" pour "Activer la liaison au niveau des fonctions", aussi bien en Debug qu'en Release, ce n'est pas adapté au Debug.
    En Debug, vous devriez laisser les réglages par défaut.
    (BIS)

  2. #742
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

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

    Je suis malade !!!
    Alors comprends pas !!!
    1>cl : ligne de commande error D8016: options de ligne de commande '/ZI' et '/Gy-' non compatibles
    1>Génération du projet "Exemple.vcxproj" terminée -- ÉCHEC.
    Merci

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 139
    Points : 12 239
    Points
    12 239
    Par défaut
    Bonjour,

    Je suis malade !!!
    Alors comprends pas !!!
    1>cl : ligne de commande error D8016: options de ligne de commande '/ZI' et '/Gy-' non compatibles
    1>Génération du projet "Exemple.vcxproj" terminée -- ÉCHEC.
    C'est les traces de la compilation en Debug du dépôt Github version Juin 22 (24/06/2024).

    Ca ne compile pas.

  4. #744
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 512
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Juin 23 (24/06/2024)

    Par :
    https://forums-ni-com.translate.goog...r&_x_tr_pto=sc
    Dans Visual Studio, accédez à Projet -> Propriétés,

    "/Zl" est en C/C++ -> Général -> Format des informations de débogage,

    "/Gy" est en C/C++ -> Génération de code -> Activer la liaison au niveau de la fonction.



    Lorsque « Modifier et continuer » (/Zl) est choisi, la liaison au niveau de la fonction doit être activée en choisissant « /Gy » au lieu de « /Gy- ». "/Gy-" signifie désactiver la liaison au niveau de la fonction et est incompatible avec le paramètre "/Zl".
    Ok ou pas !

  5. #745
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 512
    Points : 0
    Points
    0
    Par défaut
    RDV avec Dr. Jean-Michel LIEGE : mercredi 26 juin 2024 14:30 – 14:40 !!!

    Sinon :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    std::vector<std::wstring> Serie::Dossier_Titres(std::wstring titres)
    {
    ...
    annees = (match[2].matched) ? match[2].str() : L"";
    m_annees = ???_Annees(annees);
    ...
    }
    Un autre ?
    "titre", c'est vraiment pas terrible, car cela ne contient pas que le titre.
    "content" ou "contenu" serait des noms plus "correctes".
    Alors, c'est quoi ? Je suis fatigué !

    Et :
    std::wstring m_annees ===> std::vector<std::tm> m_annees;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    std::vector<std::tm> m_annees Serie::???_Annees(std::wstring annees)
    {
    ...
    }
    Ou :
    2024
    2024-
    2023-2024

    Merci Vraiment

  6. #746
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

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

    Excuse-moi !!!

    serie.cpp :
    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
    Serie::Serie(std::filesystem::path racine)
    {
    ...
        std::wregex filename_pattern{ L"(.+?)(?:\\.\\[(\\d{4}\\s|\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\s)?([^\\]]*)\\])?(?:\\.(.+))?" };
        std::wsmatch match;
        if (std::regex_match(nomDossier, match, filename_pattern))
        {
            std::wstring titres = match[1];
            m_titres = Dossier_Titres(titres);
            m_annees = (match[2].matched) ? match[2].str() : L"";
            //m_annees = ? ? ? _Annees(annees);
    
            m_sur = (match[3].matched) ? match[3].str() : L"";
    
            std::wstring sous_genre = (match[4].matched) ? match[4].str() : L"";
            m_sous_genre = sous_genre;
    ...
    }
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    class Serie
    {
    ...
        std::wstring m_annees; // std::tm Date_Diffusee_a_partir_de[_X2_] = { 0 }; // D::/Work/Prg/CPP/You/You.vcxproj
    ...
    };
    Comme avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    const std::wstring Serie::Calcul_Note_Affichage()
    {
        std::wstring res;
     
        std::vector<double>notes;
        for (const auto& saison : saisons)
    ...
        return (res.length() > 0) ? L" " + res + valuesColor : L"";
    }
    Exemple :
    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
    const void Serie::Print_Titre()
    {
        if (affichage_titres_actif)
        {
            std::wstring titres_str;
            std::wstring sur_str;
            std::wstring sj_str;
            std::wstring note_str;
    
            titres_str = keyColor[0] + L"Titre : " + valuesColor + m_titres[0];
            if (m_titres.size() > 1)
                titres_str += keyColor[1] + m_titres[1] + valuesColor + m_titres[2];
            // Année(s)
            if (affichage_annees_actif)
            {
                ???
                titres_str += keyColor[0] + L" (" + valuesColor + wstr + keyColor[0] + L')' + valuesColor;
            }
            // sur
            if (affichage_sur_actif && m_sur != L"")
            {
                sur_str += keyColor[0] + L" (sur " + valuesColor + m_sur + keyColor[0] + L" : " + valuesColor;
                // Disney+ SJ
                if (affichage_disney_sj_actif && m_disney_sj.length() != 0)
                    sur_str += m_disney_sj;
                // Netflix SJ
                if (affichage_netflix_sj_actif && m_netflix_sj.length() != 0)
                    sur_str += m_netflix_sj;
                sur_str += keyColor[0] + L')' + valuesColor;
            }
            else
            {
                // Disney+ SJ
                if (affichage_disney_sj_actif && m_disney_sj.length() != 0)
                    sur_str += keyColor[0] + L" (" + valuesColor + L"Disney+ : " + m_disney_sj + keyColor[0] + L')' + valuesColor;
                // Netflix SJ
                if (affichage_netflix_sj_actif && m_netflix_sj.length() != 0)
                    sur_str += keyColor[0] + L" (" + valuesColor + L"Netflix : " + m_netflix_sj + keyColor[0] + L')' + valuesColor;
            }
            // La signalétique jeunesse
            if (affichage_sj_actif && m_sj.length() != 0)
                sj_str += keyColor[0] + L" (" + valuesColor + L"SJ" + keyColor[0] + L" : " + valuesColor + m_sj + keyColor[0] + L')' + valuesColor;
            // Note
            if (affichage_note_actif)
                note_str += Calcul_Note_Affichage();
    
            std::wcout << titres_str << sur_str << sj_str << note_str << std::endl;
        }
    }
    Merci

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 139
    Points : 12 239
    Points
    12 239
    Par défaut
    Dans Visual Studio, accédez à Projet -> Propriétés,

    "/Zl" est en C/C++ -> Général -> Format des informations de débogage,

    "/Gy" est en C/C++ -> Génération de code -> Activer la liaison au niveau de la fonction.



    Lorsque « Modifier et continuer » (/Zl) est choisi, la liaison au niveau de la fonction doit être activée en choisissant « /Gy » au lieu de « /Gy- ». "/Gy-" signifie désactiver la liaison au niveau de la fonction et est incompatible avec le paramètre "/Zl".
    Ok ou pas !
    NON, pas Ok
    Vos réglages ne sont toujours pas optimaux.
    Vous avez mis en Debug et en Release la même configuration optimale en Release, mais pas en Debug.
    Moralité, le débogage en Debug sera plus compliqué que nécessaire.
    Pourquoi ne mettez-vous pas les valeurs par défaut ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_annees = (match[2].matched) ? match[2].str() : L"";
    C'est très bien si vous ne comptez pas faire des calcules avec ces valeurs.


    std::wstring m_annees ===> std::vector<std::tm> m_annees;
    Vous comptez en faire quoi ?
    tm, c'est une date, vous, vous n'avez que des années, donc, si vous voulez stocker ces années sous forme numérique, pour faire des calculs, mettez cela dans des int ou des long, pas des "std::tm".
    Si vous ne comptez qu'afficher ces valeurs, et dans le même formalisme que dans le nom du répertoire, "std::wstring m_annees;" fait le travail.


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::wstring> titre = lire_fichierTxt(cheminFichier.wstring(), { L"\n" });
    "titre", c'est vraiment pas terrible, car cela ne contient pas que le titre.
    "content" ou "contenu" serait des noms plus "correctes".
    Alors, c'est quoi ? Je suis fatigué !
    juste que
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::vector<std::wstring> contenu = lire_fichierTxt(cheminFichier.wstring(), { L"\n" });
    C'est plus clair, car la variable "contenu" contient le contenu du fichier.
    Dans votre cas, la variable "titre" contient aussi le contenu du fichier, et pas que le "titre".
    Toujours la même chose, NOMMER CORRECTEMENT VOS VARIABLES, et n'attendez pas un refactoring du code. C'est tout de suite.

    Comme avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::wstring Serie::Calcul_Note_Affichage()...
    Dans "Calcul_Note_Affichage", on n'a besoin de convertir les chaines de caractères des notes en valeurs pour faire des calculs.
    Mais pour les années, quels calculs voulez-vous faire ?
    Sinon, "std::wstring m_annees;" fait le travail.

    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
    const void Serie::Print_Titre()
    {
        if (affichage_titres_actif)
        {
            std::wstring titres_str;
            std::wstring sur_str;
            std::wstring sj_str;
            std::wstring note_str;
    
            titres_str = keyColor[0] + L"Titre : " + valuesColor + m_titres[0];
            if (m_titres.size() > 1)
                titres_str += keyColor[1] + m_titres[1] + valuesColor + m_titres[2];
            // Année(s)
            if (affichage_annees_actif)
            {
                ???
                titres_str += keyColor[0] + L" (" + valuesColor + wstr + keyColor[0] + L')' + valuesColor;
            }
            // sur
            if (affichage_sur_actif && m_sur != L"")
            {
                sur_str += keyColor[0] + L" (sur " + valuesColor + m_sur + keyColor[0] + L" : " + valuesColor;
                // Disney+ SJ
                if (affichage_disney_sj_actif && m_disney_sj.length() != 0)
                    sur_str += m_disney_sj;
                // Netflix SJ
                if (affichage_netflix_sj_actif && m_netflix_sj.length() != 0)
                    sur_str += m_netflix_sj;
                sur_str += keyColor[0] + L')' + valuesColor;
            }
            else
            {
                // Disney+ SJ
                if (affichage_disney_sj_actif && m_disney_sj.length() != 0)
                    sur_str += keyColor[0] + L" (" + valuesColor + L"Disney+ : " + m_disney_sj + keyColor[0] + L')' + valuesColor;
                // Netflix SJ
                if (affichage_netflix_sj_actif && m_netflix_sj.length() != 0)
                    sur_str += keyColor[0] + L" (" + valuesColor + L"Netflix : " + m_netflix_sj + keyColor[0] + L')' + valuesColor;
            }
            // La signalétique jeunesse
            if (affichage_sj_actif && m_sj.length() != 0)
                sj_str += keyColor[0] + L" (" + valuesColor + L"SJ" + keyColor[0] + L" : " + valuesColor + m_sj + keyColor[0] + L')' + valuesColor;
            // Note
            if (affichage_note_actif)
                note_str += Calcul_Note_Affichage();
    
            std::wcout << titres_str << sur_str << sj_str << note_str << std::endl;
        }
    }
    La fonction se nomme "Serie:: Print_Titre", mais la dernière ligne est "std::wcout << titres_str << sur_str << sj_str << note_str << std::endl;", c'est clairement plus que le titre.
    J'avais déjà renommé "Saison:: Print_Titre" en "Saison:: Print_Header", bien plus proche de la "réalité" de la fonction.
    Je pense que "Serie:: Print_Titre" mérite un renommage du même type. Visual Studio fait automatiquement le renommage de fonction ou de variable, alors profitez-en.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    // Année(s)
            if (affichage_annees_actif)
            {
                ???
                titres_str += keyColor[0] + L" (" + valuesColor + wstr + keyColor[0] + L')' + valuesColor;
            }
    Arrêtez de mélanger les torchons et les serviettes !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
            std::wstring annees_str;
    ...
            // Année(s)
            if (affichage_annees_actif)
            {
                annees_str += keyColor[0] + L" (" + valuesColor + m_annees + keyColor[0] + L')' + valuesColor;
            }
    ...
            std::wcout << titres_str << annees_str  << sur_str << sj_str << note_str << std::endl;
    ...
    Une variable par usage !!!

  8. #748
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

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

    serie.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Serie
    {
    ...
        std::wstring m_annees; // std::tm Date_Diffusee_a_partir_de[_X2_] = { 0 };
     
        bool affichage_annees_actif = true;
    ...
    };
    serie.cpp
    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
    const std::wstring Serie::xyz_Annees(std::wstring annees)
    {
        assert(annees.length() > 0 && L"L'année---");
        //std::wstring a;
        std::tm tm;
        tm = saisons[0].m_dossier.first;
        m_annees = std::to_wstring(1900 + tm.tm_year);
        annees = annees.substr(4);
        if(annees.size() == 1)
            return m_annees;
        if(annees[0] && (annees[1] != std::wstring::npos && annees[1] == L' '))
            return m_annees + keyColor[1] + L'-' + valuesColor;
        tm = saisons.back().m_dossier.first;
        return m_annees + keyColor[1] + L'-' + valuesColor + std::to_wstring(1900 + tm.tm_year);
    }
    
    ...
    const void Serie::Print_Titre()
    {
        if (affichage_titres_actif)
        {
            std::wstring titres_str;
            std::wstring annees_str;
            std::wstring sur_str;
            std::wstring sj_str;
            std::wstring note_str;
    
            titres_str = keyColor[0] + L"Titre : " + valuesColor + m_titres[0];
            if (m_titres.size() > 1)
                titres_str += keyColor[1] + m_titres[1] + valuesColor + m_titres[2];
            /*if (m_date_Diffusee_a_partir_de_[0] && Date_Diffusee_a_partir_de[0].tm_year != 0)
            {
                wchar_t date_string[22];
                wcsftime(date_string, 15, L"%Y", &Date_Diffusee_a_partir_de[0]);
                wstr = date_string;
                titres_str += keyColor[0] + L" (" + valuesColor + wstr + keyColor[0] + L')' + valuesColor;
            }*/
            // Année(s)
            if (affichage_annees_actif)
                annees_str += keyColor[0] + L" (" + valuesColor + xyz_Annees(m_annees) + keyColor[0] + L')' + valuesColor;        
            // sur
            if (affichage_sur_actif && m_sur != L"")
            {
                sur_str += keyColor[0] + L" (" + keyColor[1] + L"sur " + valuesColor + m_sur + keyColor[1] + L" : " + valuesColor;
                // Disney+ SJ
                if (affichage_disney_sj_actif && m_disney_sj.length() != 0)
                    sur_str += m_disney_sj;
                // Netflix SJ
                if (affichage_netflix_sj_actif && m_netflix_sj.length() != 0)
                    sur_str += m_netflix_sj;
                sur_str += keyColor[0] + L')' + valuesColor;
            }
            else
            {
                // Disney+ SJ
                if (affichage_disney_sj_actif && m_disney_sj.length() != 0)
                    sur_str += keyColor[0] + L" (" + valuesColor + L"Disney+" + keyColor[1] + L" : " + m_disney_sj + keyColor[0] + L')' + valuesColor;
                // Netflix SJ
                if (affichage_netflix_sj_actif && m_netflix_sj.length() != 0)
                    sur_str += keyColor[0] + L" (" + valuesColor + L"Netflix" + keyColor[1] + L" : " + m_netflix_sj + keyColor[0] + L')' + valuesColor;
            }
            // La signalétique jeunesse
            if (affichage_sj_actif && m_sj.length() != 0)
                sj_str += keyColor[0] + L" (" + valuesColor + L"SJ" + keyColor[1] + L" : " + valuesColor + m_sj + keyColor[0] + L')' + valuesColor;
            // Note
            if (affichage_note_actif)
                note_str += Calcul_Note_Affichage();
    
            std::wcout << titres_str << annees_str <<sur_str << sj_str << note_str << std::endl;
        }
    }
    Et :
    const std::wstring Serie::xyz_Annees(std::wstring annees) ???
    Problème :
    Azertyuiop £££.[2024].Mini-série : tm = saisons[0].m_dossier.first; !!!

    Je suis crevé !!!

    Après :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    std::vector<std::wstring> Serie::Dossier_Titres(std::wstring titres)
    {
        //bool found = (titres2==m_titres); !!!
        //assert(titres2==m_titre && "Le contenu du fichier ne correspond pas au nom du répertoire");
    ...
    }
    Alors :
    Lorsque « Modifier et continuer » (/Zl) est choisi, la liaison au niveau de la fonction doit être activée en choisissant « /Gy » au lieu de « /Gy- ». "/Gy-" signifie désactiver la liaison au niveau de la fonction et est incompatible avec le paramètre "/Zl".
    Oui ou non ? Comment faire ?

    Merci

  9. #749
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 512
    Points : 0
    Points
    0
    Par défaut
    Ah ! Mince !!! 25/06/2024, 19h08 !!!

    Demain ou plus tard !!!

  10. #750
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 512
    Points : 0
    Points
    0
    Par défaut
    Bonjour,
    NON, pas Ok
    Vos réglages ne sont toujours pas optimaux.
    Vous avez mis en Debug et en Release la même configuration optimale en Release, mais pas en Debug.
    Moralité, le débogage en Debug sera plus compliqué que nécessaire.
    Pourquoi ne mettez-vous pas les valeurs par défaut ???
    Ok !!!
    Alors : Projet ----> Propriétés Exemple :
    Propriétés de configuration ---> ...
    Configuration : Degug
    Propriétés de configuration ---> ...
    Configuration : Release
    ???
    Comment faire ?

    Merci

  11. #751
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 512
    Points : 0
    Points
    0

  12. #752
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 512
    Points : 0
    Points
    0
    Par défaut
    Excuses-moi !!!!
    https://github.com/laurentbouleau/Exemple : Juin 25 (26/06/2024)

  13. #753
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

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

    La nuit, j'ai trouvé !
    https://github.com/laurentbouleau/Exemple : Juin 26 (27/06/2024)

    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
    const std::wstring Serie::xyz_Annees(std::wstring annees)
    {
        assert(annees.length() > 0 && L"L'année---"); // ???
        std::size_t pos = 0;
        std::tm tm;
        tm = saisons[0].m_dossier.first;
        auto y = std::stoi(annees, &pos);
        assert(y  == (1900 + tm.tm_year) && L"année != saisons[0].m_dossier.first !!!");
        std::wstring wstr = annees.substr(0, 4);
        annees = annees.substr(4);
        if(annees.size() == 1)
            return wstr;
        try
        {
            test_date_tire(annees[0]);
        }
        catch (exception_date_tiret e2)
        {
            std::wcout << L"Exception a été capturée : " << e2.get_message() << std::endl;
            exit(1);
        }
        if(annees[0] && (annees[1] != std::wstring::npos && annees[1] == L' '))
            return wstr + keyColor[1] + L'-' + valuesColor;
        annees = annees.substr(1);
        tm = saisons.back().m_dossier.first;
        y = std::stoi(annees, &pos);
        assert(y == (1900 + tm.tm_year) && L"année != saisons.back().m_dossier.first !!!");
        return wstr + keyColor[1] + L'-' + valuesColor + std::to_wstring(1900 + tm.tm_year);
    }
    Ok ou pas ?
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::wstring Serie::xyz_Annees(std::wstring annees)
    et/ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::wstring Serie::xyz_Dates(std::wstring dates)
    L'A.V.C. : années ou dates !!! J'ai oublié !!! ???

    Merci

  14. #754
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

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

    J'en ai marre !!!
    serie.cpp
    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
    ...
    const std::wstring Serie::xyz_Annees(/*std::wstring annees*/)
    {
        assert(m_annees.length() > 0 && L"L'année---"); // ???
        std::size_t pos = 0;
        std::tm tm;
        tm = saisons[0].m_dossier.first;
        auto y = std::stoi(m_annees, &pos);
        assert(y == (1900 + tm.tm_year) && L"année != saisons[0].m_dossier.first !!!");
        bool found = false;
        std::wstring annees_str;// = m_annees.substr(0, 4);
        //annees = annees.substr(4);
        if (!found && (m_annees[4] == std::wstring::npos /*|| (m_annees[5] == L' ' && m_annees[6] != std::wstring::npos)*/))
        {
            found = true;
            annees_str += m_annees.substr(0, 4);
        }
        if (!found)
        {
            try
            {
                test_date_tire(m_annees[4]);
            }
            catch (exception_date_tiret e2)
            {
                std::wcout << L"Exception a été capturée : " << e2.get_message() << std::endl;
                //exit(1);
            }
            annees_str += m_annees.substr(0, 4) + keyColor[1] + L'-' + valuesColor;
            if (!found && (m_annees[5] == std::wstring::npos || (m_annees[5] == L' ' && m_annees[6] != std::wstring::npos)))
                //return wstr + keyColor[1] + L'-' + valuesColor;
            {
                found = true;
                //annees_str +=
            }
            //annees = annees.substr(1);
            if(!found && std::isdigit(m_annees[5]) && std::isdigit(m_annees[6]) && std::isdigit(m_annees[7]) && std::isdigit(m_annees[8]))
            {
                tm = saisons.back().m_dossier.first;
                y = std::stoi(m_annees.substr(5,9), &pos);
                assert(y == (1900 + tm.tm_year) && L"année != saisons.back().m_dossier.first !!!");
                annees_str += m_annees.substr(5, 9);
                found = true;
            }
            assert((m_annees[9] != std::wstring::npos) && L"année... !!!");
     
        }
        //return keyColor[1] +L'(' + + L'-' + valuesColor + std::to_wstring(1900 + tm.tm_year);
        return keyColor[0] + L" (" + valuesColor + annees_str + keyColor[0] + L')' + valuesColor;
    }
    ...
    const void Serie::Print_Header()
    {
    ...
            // Année(s)
            if (affichage_annees_actif)
            {
                annees_str = xyz_Annees();
            }
    ...
    }
    ...
    Nom : Capture d’écran 2024-06-27 221618.png
Affichages : 55
Taille : 4,7 Ko

    https://github.com/laurentbouleau/Exemple : Juin 27 (27/06/2024)


  15. #755
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

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

    https://github.com/laurentbouleau/Exemple : Juin 28 (29/06/2024)

    Explication :
    serie.cpp
    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
    ...
    Serie::Serie(std::filesystem::path racine)
    {
        this->racine = racine;
        auto nomDossier = racine.filename().wstring();
        assert(nomDossier.length() > 0 && L"Nom de dossier vide");
     
        std::wstring annees;
     
        //std::wregex filename_pattern{ L"(xxxx)__(yyyy)?__(zzzz)?__(tttt)?" };
        //std::wregex filename_pattern{ L"(.+?)(\\d{4}\\s|\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\s)?([^\\]]*)?(.+)?" };
    //    std::wregex filename_pattern{ L"(.+?)(\\d{4}\\s|\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\s)?([^\\]]*)?(.+)?" };
        std::wregex filename_pattern{ L"(.+?)(?:\\.\\[(\\d{4}\\s|\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\s)?([^\\]]*)\\])?(?:\\.(.+))?" };
        std::wsmatch match;
        if (std::regex_match(nomDossier, match, filename_pattern))
        {
            std::wstring titres = match[1];
            m_titres = Dossier_Titres(titres);
            m_annees = (match[2].matched) ? match[2].str() : L"";
            std::size_t pos;
            pos = m_annees.find(L' ');
            if (pos != std::wstring::npos)
                m_annees = m_annees.substr(0, pos);
            m_sur = (match[3].matched) ? match[3].str() : L"";
     
            std::wstring sous_genre = (match[4].matched) ? match[4].str() : L"";
            m_sous_genre = sous_genre;
        }
        else
        {
            assert(false == true && "Le nom du répertoire n'est pas un nom valide.");
        }
    }
    ...
    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
    ...
    const std::wstring Serie::xyz_Annees() // ???
    {
        assert(m_annees.length() > 0 && L"L'année---");// ???
        assert(m_annees.size() < 10 && L"L'année 2---");// ???
        std::size_t pos = m_annees.size();
        std::wstring annees_str, tmp;
        std::vector<std::wstring> annees_vec;
     
        std::wstringstream ss(m_annees); // ???
        while (getline(ss, tmp, L'-')) // ???
            annees_vec.push_back(tmp);
        bool found = false;
        std::tm tm;
        tm = saisons[0].m_dossier.first;
        auto y = std::stoi(annees_vec[0], &pos);
        assert(y == (1900 + tm.tm_year) && L"année != saisons[0].m_dossier.first !!!");
        annees_str = annees_vec[0];
        if (m_annees[4] != L'-')
        {
            found = true;
        }
        if (!found)
        {
            try
            {
                test_date_tire(m_annees[4]);
            }
            catch (exception_date_tiret e2)
            {
                std::wcout << L"Exception a été capturée : " << e2.get_message() << std::endl;
            }
            annees_str += keyColor[1] + L'-';
        }
        if (!found && annees_vec.size() == 2)
        {
            found = true;
            tm = saisons.back().m_dossier.first;
            y = std::stoi(m_annees.substr(5, 9), &pos);
            assert(y == (1900 + tm.tm_year) && L"année != saisons.back().m_dossier.first !!!");
            annees_str += valuesColor + annees_vec[1];
        }
        return keyColor[0] + L" (" + valuesColor + annees_str + keyColor[0] + L')' + valuesColor;
    }
    ...
    Voilà ! Oui ou non ?

    Sinon :
    Projet ----> Propriétés Exemple :
    Propriétés de configuration ---> ... (Configuration : Degug)
    Propriétés de configuration ---> ... (Configuration : Release)
    Je suis fatigué !

    Merci

  16. #756
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 512
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Juin 29 (29/06/2024)

    Nom : Capture d’écran 2024-06-29 211652.png
Affichages : 48
Taille : 26,3 Ko

    Ok ou non ?

    Merci

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 139
    Points : 12 239
    Points
    12 239
    Par défaut
    serie.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    class Serie
    {
    ...
        std::wstring m_annees; // std::tm Date_Diffusee_a_partir_de[_X2_] = { 0 };
     
        bool affichage_annees_actif = true;
    ...
    };
    Ok, si vous ne faites que de l'affichage (de la chaine de caractère), ce que vous ne faites pas : cf. votre fonction "xyz_Annees" qui fait des bidouilles avec.
    Vous devriez utiliser un type de champ correspondant à son usage.
    Vous vous en servez comme un nombre entier ou une paire de nombres entiers, alors pourquoi le champ "m_annees" n'est ni l'un ni l'autre ?
    Soyez clair et précis dans l'usage de vos champs donc utilisez les types qui conviennent, quitte à construire une classe dédiée à cela.

    serie.cpp
    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
    const std::wstring Serie::xyz_Annees(std::wstring annees)
    {
        assert(annees.length() > 0 && L"L'année---");
        //std::wstring a;
        std::tm tm;
        tm = saisons[0].m_dossier.first;
        m_annees = std::to_wstring(1900 + tm.tm_year);
        annees = annees.substr(4);
        if(annees.size() == 1)
            return m_annees;
        if(annees[0] && (annees[1] != std::wstring::npos && annees[1] == L' '))
            return m_annees + keyColor[1] + L'-' + valuesColor;
        tm = saisons.back().m_dossier.first;
        return m_annees + keyColor[1] + L'-' + valuesColor + std::to_wstring(1900 + tm.tm_year);
    }
    Le paramètre "annees" n'est pas pertinent et rend le code illisible.
    Vous avez déjà corrigé cela, c'est bien.
    Vous faites des assertions comme le fait que le paramètre "annees" ait une longueur d'au-moins 4 caractères mais ce n'est pas cette condition qui est vérifiée avec les assert en début de fonction, pourquoi ?
    Ayez une vue claire de la fonction des champs, quitte à les modifier après.

    Pourquoi "saison[0]" et pas "saison[18]" ?
    "m_dossier", c'est quoi ?
    "first', c'est quoi ?
    On ne devrait pas avoir à se balader dans le code pour "comprend" ce que sait.
    Au vu du contenu des fichiers "données" je ne suis même pas sûr que les sous-répertoires d'une série soient des saisons.
    Donc, avec des noms si peu explicites, on fait peut-être fausse route.
    Sinon, vous ne devriez pas avoir de mal à trouver des noms plus explicites, non ?

    Votre fonction "xyz_Annees" fait 10 choses à la fois, donc normale de ne pas trouver de nom adapté.
    Simplifiez votre code pour que chaque fonction ne fasse qu'une chose, mais bien.
    Votre fonction "xyz_Annees" génère une chaine de caractère à partir des informations sur l'année, donc appelez là "format_Annees", par exemple.
    Et tout ce qui fait mumuse avec "saison", vous le faites dans une fonction dédiée à part, pour pas tout mélanger, comme "calculerAnneeDebut" (et "calculerAnneeFin" devrait aussi être utile).
    Le code actuel de "xyz_Annees" est encore plus complexe, et donc gagnerait encore plus à être correctement découper en utilisant des fonctions avec un sens précis et pas du bidouillage de chaine de caractères approximatif.

    Pour votre fonction "Serie:: Print_Titre", c'est bien, vous ne mélangez pas les variables (le mais le nom de la fonction : "Serie:: Print_Titre", c'est pourri, "Serie:: Print_Header" ça serait un peu mieux).
    Je pense que vous devriez séparer le code qui génère le texte à afficher (avec la mise en forme) de chaque partie (titre, dates, signalétique jeunesse, etc...) dans des fonctions dédiées type "format_xxx".
    Car ces mises en forme risquent bien d'être utilisées ailleurs aussi.

    Et :
    const std::wstring Serie:: xyz_Annees(std::wstring annees) ???
    Problème :
    Azertyuiop £££.[2024].Mini-série : tm = saisons[0].m_dossier.first; !!!
    Nommez correctement les choses, et peut-être qu'on devinera la question.
    "2024", c'est quoi ? Une année de diffusion ? une année de production ? etc...

    La fonction "Serie:: Dossier_Titres" a un titre qui ne veut rien dire. C'est plus "Serie::Extraire_Titres". Que la chaine de caractère passée en paramètre vienne du nom du dossier ou du contenu d'un fichier ou d'un détecteur d'entropie, on s'en fout.

    Alors :
    Lorsque « Modifier et continuer » (/Zl) est choisi, la liaison au niveau de la fonction doit être activée en choisissant « /Gy » au lieu de « /Gy- ». "/Gy-" signifie désactiver la liaison au niveau de la fonction et est incompatible avec le paramètre "/Zl".
    Oui ou non ? Comment faire ?
    Déjà répondu :
    NON, pas Ok
    Vos réglages ne sont toujours pas optimaux.
    Vous avez mis en Debug et en Release la même configuration optimale en Release, mais pas en Debug.
    Moralité, le débogage en Debug sera plus compliqué que nécessaire.
    Pourquoi ne mettez-vous pas les valeurs par défaut ???
    La version "Juin 29 (29/06/2024)" a toujours le problème : "/Gy- " en Debug, donc projet non compilable en Debug.
    Pourquoi avez-vous touché à cela après que je vous ai posté une version "corrigé" du fichier .vcxproj ???

    Ok !!!
    Alors : Projet ----> Propriétés Exemple :
    Propriétés de configuration ---> ...
    Configuration : Degug
    Propriétés de configuration ---> ...
    Configuration : Release
    ???
    Comment faire ?
    Par rapport à la version "Juin 29 (29/06/2024)", juste supprimer EN DEBUG le réglage "Activer la liaison au niveau des fonctions" pour qu'il reprenne le réglage par défaut. C'EST TOUT !!!

    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
    const std::wstring Serie::xyz_Annees(std::wstring annees)
    {
        assert(annees.length() > 0 && L"L'année---"); 
        std::size_t pos = 0;
        std::tm tm;
        tm = saisons[0].m_dossier.first;
        auto y = std::stoi(annees, &pos); //-->pourquoi cette tambouille plutôt que de prendre un int en paramètre ????
        assert(y  == (1900 + tm.tm_year) && L"année != saisons[0].m_dossier.first !!!");
        std::wstring wstr = annees.substr(0, 4);
        annees = annees.substr(4);
        if(annees.size() == 1)
            return wstr; //return au milieu d'une fonction et sans mise en forme, faites SIMPLE, récupération des données puis mise en forme, pas de return "sauvage" !!!!
        try  //-->ça dégage !!!
        { //-->ça dégage !!!
            test_date_tire(annees[0]);
        } //-->ça dégage !!!
        catch (exception_date_tiret e2) //-->ça dégage !!!
        { //-->ça dégage !!!
            std::wcout << L"Exception a été capturée : " << e2.get_message() << std::endl; //-->ça dégage !!!
            exit(1);// //-->WTF !!!
        } //-->ça dégage !!!
        if(annees[0] && (annees[1] != std::wstring::npos && annees[1] == L' '))
            return wstr + keyColor[1] + L'-' + valuesColor;
        annees = annees.substr(1);
        tm = saisons.back().m_dossier.first;//-->comment les dates dans le champ "saisons" sont triées ??? Pour moi, elles ne le sont pas, c'est à vous de faire en sorte qu'elles le soient !!!
        y = std::stoi(annees, &pos);
        assert(y == (1900 + tm.tm_year) && L"année != saisons.back().m_dossier.first !!!");
        return wstr + keyColor[1] + L'-' + valuesColor + std::to_wstring(1900 + tm.tm_year);
    }
    Ok ou pas ?
    Absolument pas, tout ce qui a été modifié ici par rapport à la version d'avant sont des erreurs, que j'ai déjà mentionné (exit, try/catch contre-productif, typage de variable non optimale, noms de variables et de fonction abscons).
    La version "Juin 29 (29/06/2024)" de cette fonction est encore pire au sujet du code interne, mais elle a quand même dégagé le paramètre "annees", ce qui est très bien.

    Prenez la peine de gérer un peu le typage des champs, SVP.
    Exemple en quelques lignes en ajoutant un champ "m_f_anneesProduction", avec un typage "correct" (vous pourrez supprimer les champs avec de mauvais types correspondants après, comme "std::wstring m_annees") :
    Ajout dans serie.h:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    ...
    #include <optional>
    ...
    class Serie
    {
    ...
    std::pair<std::optional<int>, std::optional<int>> m_f_anneesProduction;
    ...
    Ajout dans serie.cpp :
    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
    ...
    Serie::Serie(std::filesystem::path racine)
    {
    ...
        m_annees = (match[2].matched) ? match[2].str() : L"";
        if (match[2].matched)
        {
            std::wstring annees_str = match[2].str();
            std::wsmatch dummy;
            if (std::regex_match(annees_str, dummy, std::wregex(L"\\d{4}\\-\\d{4}\\s")))
            {
                m_f_anneesProduction.first = stoi(annees_str);
                m_f_anneesProduction.second = stoi(annees_str.substr(5));
            }
            else
            {
                m_f_anneesProduction.first = stoi(annees_str);
            }
        }
        std::size_t pos;
        pos = m_annees.find(L' ');
    Avec cette simple modification, le code de "Serie:: xyz_Annees/Serie::format_Annees()" pourrait être bien plus simple :
    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
    std::wstring Serie::format_Annees()
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            return keyColor[0] + L" (" + valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + keyColor[1] + L'-' + valuesColor + std::to_wstring(m_f_anneesProduction.second.value())  + keyColor[0] + L')' + valuesColor;
        }
        else if (m_f_anneesProduction.first)
        {
            return keyColor[0] + L" (" + valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + keyColor[1] + L')' + valuesColor;
        }
        else
        {
            std::pair<int, int> anneesDiffusion = calculerAnneesDiffusion();
            return keyColor[0] + L" (" + valuesColor + std::to_wstring(anneesDiffusion.first) + keyColor[1] + L'-' + valuesColor + std::to_wstring(anneesDiffusion.second) + keyColor[0] + L')' + valuesColor;
        }
    }
    Encore simplifiable en utilisant les primitives de formatage et pas des chaines de caractères en dur.
    "Serie::calculerAnneesDiffusion" devrait être simple à faire, si vous utilisez des types adaptés pour les champs de la classe Serie et de la classe Saison.

    L'A.V.C. : années ou dates !!! J'ai oublié !!! ???
    Une date est composée d'une année dans un calendrier (il y a plus de 2000 calendriers différents sur Terre (le grégorien et le julien (des russes) n'en sont que 2 parmi ces milliers)) + d'un mois de l'année + un jour dans le mois.
    Une année, ce n'est qu'un nombre entier dans un calendrier particulier, c'est pour cela que vous ne devriez manipuler les années qu'avec des type de nombre entier, comme "int" ou "long".

    Vous faites beaucoup beaucoup trop compliqué, pour rien !!!

    https://github.com/laurentbouleau/Exemple : Juin 28 (29/06/2024)

    Explication :
    serie.cpp
    ...
    Qu'est-ce que vous n'avez pas compris dans les explications précédentes, SVP ?
    Le but final est de découper le nom du répertoire en 4 parties :
    (xxxx)__(yyyy)?__(zzzz)?__(tttt)?
    Avec "__" des séparateurs entre les différentes parties du nom du répertoire.
    Avez-vous repérez dans l'expression régulière complète la partie xxxx, la partie yyyy, la partie zzzz et la partie tttt ?
    C'est normal que l'utilisation des expressions régulières soit un peu déstabilisante.
    Pour vous aider, vous devriez utiliser des évaluateurs d'expression régulière en ligne comme :
    Un évaluateur avec notre expression régulière et un jeu de test :
    https://regex101.com/r/bhCcJO/1
    Le séparateur entre la première et la seconde partie du nom c'est un point, suivi d'un crochet ouvrant "[".
    Vous devez voir, dans l'expression régulière, la chaine "\\.\\[", non ?
    Si vous enlevez l'escaping du C/C++ : "\.\["
    Si vous enlevez l'escaping des expressions régulières : ".[".
    Donc la partie "\\.\\[" de l'expression régulière, c'est ce qui sépare la première et la seconde partie dans le nom du répertoire.
    Essayez de faire la même chose pour le séparateur entre la 2ème et la 3ème partie (" ") ainsi qu'entre la 3ème et la 4ème partie ("].").

    Pour le reste du post du "29/06/2024, 14h59", déjà répondu dans ce post, voir ci-avant.


    Le poste du "29/06/2024, 21h22".
    Votre copie d'écran est dans la section "Général" des propriétés C/C++, le problème que je signale est dans la section "Génération de code", ligne "Activer la liaison au niveau des fonctions".

  18. #758
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

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

    https://github.com/laurentbouleau/Exemple : Juillet 02 (01/072024)

    Le poste du "29/06/2024, 21h22".
    Votre copie d'écran est dans la section "Général" des propriétés C/C++, le problème que je signale est dans la section "Génération de code", ligne "Activer la liaison au niveau des fonctions".
    Oui ou pas ???

    Merci

  19. #759
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    512
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Matériel informatique

    Informations forums :
    Inscription : Avril 2021
    Messages : 512
    Points : 0
    Points
    0
    Par défaut
    Nom : Capture d’écran 2024-07-02 014941.png
Affichages : 23
Taille : 25,2 Ko

    Nom : Capture d’écran 2024-07-01 214437.png
Affichages : 27
Taille : 33,8 Ko
    ???
    Pas dormis !!!

    Merci

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 139
    Points : 12 239
    Points
    12 239
    Par défaut
    Ok pour la l'option "Activer la liaison au niveau des fonctions" en Debug.
    Mais pourquoi avez-vous changé l'option "Format des informations de débogage", en Debug, de "(/ZI)" en "(/Zi)" ???
    Pour ces options, NE sélectionnez PAS la configuration "Toutes les configurations", à moins de vouloir utiliser les valeurs par défaut (suppression des valeurs dans les lignes d'options).
    Avez-vous bien compris le sens de la "dropdown list" (menu déroulant) "Configuration :" en haut à gauche de la fenêtre des propriétés du projet ?

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

Discussions similaires

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

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo