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

    Attention :
    std::vector<std::wstring> m_keyColor

    https://www.w3schools.com/tags/ref_colornames.asp
    et
    https://learn.microsoft.com/fr-fr/wi...inal-sequences
    (Couleurs étendues

    Certains émulateurs de terminaux virtuels prennent en charge une palette de couleurs supérieure aux 16 couleurs fournies par la console Windows. Pour ces couleurs étendues, la console Windows choisit la couleur appropriée la plus proche dans la table de 16 couleurs existante pour l’affichage. Contrairement aux valeurs SGR classiques ci-dessus, les valeurs étendues consomment des paramètres supplémentaires après l’indicateur initial, conformément au tableau ci-dessous.)
    Merci

  2. #922
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 278
    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 278
    Points : 12 507
    Points
    12 507
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
            duree_str = L' ' + std::to_wstring(heures) + m_keyColor[0] + m_espace1 + (heures <= 1 ? m_h[0] : m_h[0] + m_h[1]) + m_valuesColor + m_espace2 +
                std::to_wstring(minutes) + m_keyColor[0] + m_espace3 + (minutes <= 1 ? m_min[0] : m_min[0] + m_min[1]) + m_valuesColor;
    Toute cette usine à gaz (classe X_Person, classe Person, des champs dans des classes avec des noms abscons), juste pour gérer un pluriel sous forme de suffixe fixe uniquement ???

    Si la marque d'un pluriel n'est pas un suffixe fixe dans une langue supportée et tout ce bric-à-brac s'effondre.

    Actuellement, tout ce bordel de "personnalisation" ne sert à rien de "constructif".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    duree_str = L' ' + std::to_wstring(heures) + m_keyColor[0] + m_espace1 + (heures <= 1 ? m_labelHeureSingulier : m_labelHeurePluriel) + m_valuesColor + m_espace2 +
                std::to_wstring(minutes) + m_keyColor[0] + m_espace3 + (minutes <= 1 ? m_labelMinuteSingulier : m_labelMinutePluriel ) + m_valuesColor;
    C'est déjà plus lisible, on n'utilise pas des std::vector n'importe comment, c'est tout autant personnalisable et on peut facilement gérer d'autres formes de pluriels que de suffixe "fixe". (+s ou +x ; ou halves ou wolves en anglais, etc...).

    Je ne comprends toujours pas votre obsession de la "personnalisation" si prématurée.
    (reste encore ces conneries de vecteur de m_keyColor et autres m_espaceX imbittables)

    Faites simple !

    Les couleurs du Web n'ont rien à voir avec les couleurs d'une console "caractère".

    Couleurs étendues

    Certains émulateurs de terminaux virtuels prennent en charge une palette de couleurs supérieure aux 16 couleurs fournies par la console Windows. Pour ces couleurs étendues, la console Windows choisit la couleur appropriée la plus proche dans la table de 16 couleurs existante pour l’affichage. Contrairement aux valeurs SGR classiques ci-dessus, les valeurs étendues consomment des paramètres supplémentaires après l’indicateur initial, conformément au tableau ci-dessous.)
    Arrêtez de vous prendre la tête avec le respect des couleurs au niveau colorimétrique !!!
    Il y a des choses bien plus fondamentales et moins aléatoires que ces conneries de "respect" des couleurs !!!

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

    Ah ! Mince ! Tant pis !

    https://github.com/laurentbouleau/Exemple : Octobre 16 (24/10/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
    30
    31
    32
    33
    34
    void Film::AffichagePersonnaliser()
    {  
        const class AffichagePersonnaliser perso;
        auto& e_1_0 = perso.m_espace1[0], & e_1_1 = perso.m_espace1[1];
        auto& e_2_0 = perso.m_espace2[0], & e_2_1 = perso.m_espace2[1];
        auto& e_3_0 = perso.m_espace3[0], & e_3_1 = perso.m_espace3[1];
     
        auto& h0 = perso.m_h[0], & h1 = perso.m_h[1];
        auto& h2 = perso.m_h[2], & h3 = perso.m_h[3];
        auto& h4 = perso.m_h[4], & h5 = perso.m_h[5];
        auto& h6 = perso.m_h[6], & h7 = perso.m_h[7];
        auto& h8 = perso.m_h[8], & h9 = perso.m_h[9];
     
        auto& min0 = perso.m_min[0], & min1 = perso.m_min[1];
        auto& min2 = perso.m_min[2], & min3 = perso.m_min[3];
        auto& min4 = perso.m_min[4], & min5 = perso.m_min[5];
        auto& min6 = perso.m_min[6], & min7 = perso.m_min[7];
        auto& min8 = perso.m_min[8], & min9 = perso.m_min[9];
        auto& min10 = perso.m_min[10], & min11 = perso.m_min[11];
     
        //
     
        m_espace1 = e_1_1;
     
        m_h = { h4, h5 };
     
        m_espace2 = e_2_1;
        m_espace3 = e_3_1;
     
        m_min = { min6, min7 };
     
        m_keyColor = perso.m_keyColor;
        m_valuesColor = perso.m_valuesColor;
    }
    Ok ou pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    duree_str = L' ' + std::to_wstring(heures) + m_keyColor[0] + m_espace1 + (heures <= 1 ? m_labelHeureSingulier : m_labelHeurePluriel) + m_valuesColor + m_espace2 +
                std::to_wstring(minutes) + m_keyColor[0] + m_espace3 + (minutes <= 1 ? m_labelMinuteSingulier : m_labelMinutePluriel ) + m_valuesColor;
    et
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    (((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)(\s(.+))?
    Après !!!

    Merci

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

    https://github.com/laurentbouleau/Exemple : Octobre 17 (25/10/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
    std::wstring Film::calcul_Duree_affichage() const
    {
        std::wstring duree_str;
        if (affichage_duree_actif)
        {
            long heures = m_duree / (60 * 60);
            long minutes = (m_duree % (60 * 60)) / 60;
            long secondes = m_duree % 60;
            //duree_str = L' ' + std::to_wstring(heures) + m_keyColor[0] + m_espace1 + (heures <= 1 ? m_h[0] : m_h[0] + m_h[1]) + m_valuesColor + m_espace2 +
            //    std::to_wstring(minutes) + m_keyColor[0] + m_espace3 + (minutes <= 1 ? m_min[0] : m_min[0] + m_min[1]) + m_valuesColor;
    
            duree_str = L' ' + std::to_wstring(heures) + m_keyColor[0] + m_espace1 + (heures <= 1 ? m_labelHeureSingulier : m_labelHeureSingulier + m_labelHeurePluriel) + m_valuesColor + m_espace2 +
                std::to_wstring(minutes) + m_keyColor[0] + m_espace3 + (minutes <= 1 ? m_labelMinuteSingulier : m_labelMinuteSingulier + m_labelMinutePluriel) + m_valuesColor;
        }
        return duree_str;
    }
    Ok ou ps ?

    Merci

  5. #925
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    707
    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 : 707
    Points : 0
    Points
    0
    Par défaut
    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
        const std::wregex filename_format_rg = L"(((" + // Noir
            L"([[:digit:]]{4})" + // Rouge
            L"-" +                // Noir
            L"([[:digit:]]{2})" + // Vert
            L"-" +                // Noir
            L"([[:digit:]]{2})" + // Bleu clair
            L"|" +                // Noir
            L"([[:digit:]]{2})" + // Rouge
            L"-" +                // Noir
            L"([[:digit:]]{2})" + // Vert
            L"|" +                // Noir
            L"([[:digit:]]{2})" + // Bleu clair
            L")" +                // Noir 
            L"(_?)" +             // Rouge
            L")+" +               // Noir
            L"(\\s(.+)" +         // Vert
            L")?";
    Marche pas !!!

    ???

  6. #926
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 278
    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 278
    Points : 12 507
    Points
    12 507
    Par défaut
    Post du "24/10/2024, 22h23"

    C'est bien d'avoir renommer la classe "Person" en autre chose, mais pas en "AffichagePersonnaliser".

    Le fait de mettre des verbes d'action dans les noms de fonction, c'est justement pour que ces verbes n'apparaissent pas dans les noms de classe.

    J'ai indiqué le nom "AffichagePersonnalisation" pas "AffichagePersonnaliser".
    Pour qu'il n'y est pas d'ambiguïté entre la classe et la fonction.
    Dans les conventions de nommage, on indique aussi souvent que les fonctions doivent commencer par des minuscules :
    https://www.geeksforgeeks.org/naming-convention-in-c/
    Je ne me suis pas astreint à ces conventions dans mes réponses pour garder vos "conventions" sans vous prendre la tête avec LES "vrais" conventions, pour ne pas vous embrouiller.
    Mais, là, je pense qu'il faut un minimum de "rigueur". (malgré que vous n'avez toujours pas fait le travail d'expliciter le rôle des classes/fonctions/variables par des noms explicites.)
    Si vous vous astreignez à ces conventions, il y aura encore moins d'ambiguïté.

    Et on en revient à "tout ça pour ça".
    Juste faire une usine à gaz qui ne permet que de mettre des constantes dans une classe.
    Classe avec un nom presque explicite, mais avec des noms de champs à la con, des types de champs complètement à l'Ouest, etc...
    Pour rendre la classe "Film" impersonnalisable, car le lien avec la classe "AffichagePersonnaliser" est en dure et on ne peut pas changer les valeurs des champs depuis l'extérieur d'un objet "Film".

    "Mon" code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    int wmain(int argc, wchar_t* argv[])
    {
    ...
        AffichagePersonnalisation person = getCurrentAffichagePersonnalisation();//fonction à implémenter pour récupérer la configuration de personnalisation de l'utilisateur.
    ...
            film.AffichagePersonnaliser(person);
            film.Print();
    ...
    }
    Si je passe un objet "AffichagePersonnalisation" à la fonction "AffichagePersonnaliser", c'est pas pour rien.
    C'est pour rendre l'objet "film" personnalisable de l'extérieur.

    Ok ou pas ?
    Donc pas du tout "OK".
    ---------------------

    Post du "25/10/2024, 13h19"

    Ok ou ps ?
    Absolument pas.
    Vous n'avez que changé les noms des champs et supprimé un tableau.
    Mais la limitation en termes de formulation du pluriel est toujours la même.
    Vous avez un code plus complexe et moins polyvalent que le mien.
    Pourquoi voulez-vous absolument faire plus compliqué ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    const class AffichagePersonnalisation
    {
    public:
        std::wstring m_espace1{L" "};
        std::wstring m_espace2{L" "};
        std::wstring m_espace3{L" "};
     
        std::pair<std::wstring,std::wstring> m_labelsHeure { L"heure", L"heures", };
        std::pair<std::wstring,std::wstring> m_labelsMinute{ L"minute", L"minutes"};
     
        std::vector<std::wstring> m_keyColor{ L"\x1b[94;1m", L"\x1b[38;2;0;255;0m", L"\x1b[38;2;255;0;0m", L"\x1b[38;2;255;255;0m" };
        std::wstring m_valuesColor{ L"\x1b[38;2;255;255;255m" }; // Blanc
    };
    Les labels complets, c'est quand même plus explicite que des "s" qui se baladent.
    ---------------------

    Post du "25/10/2024,16h30"

    Marche pas !!!
    Quand on numérote, c'est avec des numéros, et, en générale, c'est des nombres.

    0 (l'ensemble de ce qui a été capturé par l'expression régulière): (((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)(\s(.+))?
    1 : ((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)
    2 : (([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))
    3 : ([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})
    4 : [[:digit:]]{4}
    5 : [[:digit:]]{2}
    6 : [[:digit:]]{2}
    7 : [[:digit:]]{2}
    8 : [[:digit:]]{2}
    9 : [[:digit:]]{2}
    10 : _?
    ...

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

    https://github.com/laurentbouleau/Exemple : Octobre 19 (27/10/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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    ??? getCurrentAffichagePersonnalisation()
    {
        const std::pair<std::wstring, std::wstring> espace1{ L"", L" " };
        // _
        const std::pair<std::wstring, std::wstring> espace2{ L"", L" " };
        // _
        const std::pair <std::wstring, std::wstring> espace3{ L"", L" " };
    
        auto& r_e_1_0 = espace1.first, & r_e_1_1 = espace1.second;
        auto& r_e_2_0 = espace2.first, & r_e_2_1 = espace2.second;
        auto& r_e_3_0 = espace3.first, & r_e_3_1 = espace3.second;
    
        // h
        std::vector<std::pair<std::wstring, std::wstring>> labelsHeure{ { L"h", L"h" },            // 0
                                                                        { L"H", L"h" },            // 1
                                                                        { L"heure", L"heures" },   // 2
                                                                        { L"Heure", L"Heures" },   // 3
                                                                        { L"HEURE", L"HEURES" } }; // 4
    
        auto& r_lH_0{ labelsHeure[0] };
        auto& r_lH_1{ labelsHeure[1] };
        auto& r_lH_2{ labelsHeure[2] };
        auto& r_lH_3{ labelsHeure[3] };
        auto& r_lH_4{ labelsHeure[4] };
    
        // min
        std::vector<std::pair<std::wstring, std::wstring>> labelsMinute{ { L"min", L"min" },          // 0
                                                                         { L"Min", L"Min" },          // 1
                                                                         { L"MIN", L"MIN" },          // 2
                                                                         { L"minute", L"minutes" },   // 3
                                                                         { L"Minute", L"Minutes" },   // 4
                                                                         { L"MINUTE", L"MINUTES" } }; // 5
    
        auto& r_lM_0{ labelsMinute[0] };
        auto& r_lM_1{ labelsMinute[0] };
        auto& r_lM_2{ labelsMinute[0] };
        auto& r_lM_3{ labelsMinute[0] };
        auto& r_lM_4{ labelsMinute[0] };
        auto& r_lM_5{ labelsMinute[0] };
    
        //
        std::vector<std::wstring> keyColor{ L"\x1b[94;1m", L"\x1b[38;2;0;255;0m", L"\x1b[38;2;255;0;0m", L"\x1b[38;2;255;255;0m" };
        std::wstring valuesColor{ L"\x1b[38;2;255;255;255m" }; // Blanc
    
        //
    
        //return { {r_e_1_1}, {r_e_2_1}, {r_e_3_1}, r_lH_2 };
        return ???;
    }
    Je suis fatigué !!!

    Merci

  8. #928
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 278
    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 278
    Points : 12 507
    Points
    12 507
    Par défaut
    const class AffichagePersonnalisation
    Pourquoi vous collez toujours ces putains de "const" devant les classes ???


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ??? getCurrentAffichagePersonnalisation()
    Une fonction "getCurrentX" ne devrait pas retourner un X ?
    Alors que devrait retourner une fonction "getCurrentAffichagePersonnalisation" ?
    Pas un objet AffichagePersonnalisation ?

    C'est quoi tu ce bordel dans getCurrentAffichagePersonnalisation ?

    Comme vous n'avez toujours pas analysé comment changer de personnalisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    AffichagePersonnalisation getCurrentAffichagePersonnalisation()
    {
        return AffichagePersonnalisation();
    }
    Faites simple !!!

  9. #929
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    707
    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 : 707
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Octobre 20 (28/10/2024)
    J'en ai marre !!!

    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
    struct Xxx
    {
        const std::pair<std::wstring, std::wstring> espace1{ L"", L" " };
        // _
        const std::pair<std::wstring, std::wstring> espace2{ L"", L" " };
        // _
        const std::pair <std::wstring, std::wstring> espace3{ L"", L" " };
        // h
        std::vector<std::pair<std::wstring, std::wstring>> labelsHeure{ { L"h", L"h" },            // 0
                                                                        { L"H", L"h" },            // 1
                                                                        { L"heure", L"heures" },   // 2
                                                                        { L"Heure", L"Heures" },   // 3
                                                                        { L"HEURE", L"HEURES" } }; // 4
     
        // min
        std::vector<std::pair<std::wstring, std::wstring>> labelsMinute{ { L"min", L"min" },          // 0
                                                                         { L"Min", L"Min" },          // 1
                                                                         { L"MIN", L"MIN" },          // 2
                                                                         { L"minute", L"minutes" },   // 3
                                                                         { L"Minute", L"Minutes" },   // 4
                                                                         { L"MINUTE", L"MINUTES" } }; // 5
        //
        std::vector<std::wstring> keyColor{ L"\x1b[94;1m", L"\x1b[38;2;0;255;0m", L"\x1b[38;2;255;0;0m", L"\x1b[38;2;255;255;0m" };
        std::wstring valuesColor{ L"\x1b[38;2;255;255;255m" }; // Blanc
    };
    https://www.geeksforgeeks.org/naming-convention-in-c/
    • Le caractère « m » précède également d'autres modificateurs de nom. Par exemple, « p » pour les pointeurs. // ok
    • Les variables de référence doivent être précédées de « r ». // ok
    • ect...

  10. #930
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 278
    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 278
    Points : 12 507
    Points
    12 507
    Par défaut
    Je ne comprends toujours pas l'utilité de la classe "Xxx", comme "X_Perso" etc...
    Pourquoi faire compliquer ?
    Elles servent à quoi ? (BORDEL)

    Pour rendre compilable votre code, faut "juste" :
    - ajouter "class AffichagePersonnalisation;" devant la déclaration de la classe "Film" dans le fichier "film.h" (parce que vous faite des références croisées entre classes, je comprend pas pourquoi vous vous faite chier avec ça)
    - Sortir la ligne "AffichagePersonnalisation getCurrentAffichagePersonnalisation();" de l'intérieur de la déclaration de la classe "AffichagePersonnalisation" dans "film_serie.h", pour qu'elle corresponde à la définition de la fonction dans "film_serie.cpp".

    Le caractère « m » précède également d'autres modificateurs de nom. Par exemple, « p » pour les pointeurs. // ok
    Les variables de référence doivent être précédées de « r ». // ok
    ect...
    C'est bien 2 règles de codage que je ne suivrais pas. Elles utilisent "abusivement" la notation hongroise.

    Vous faites des trucs incompréhensible au niveau de la "personnalisation".
    Justifiez votre usine à gaz, SVP.

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

    https://github.com/laurentbouleau/Exemple : Novembre 01 (01/11/2024)

    - ajouter "class AffichagePersonnalisation;" devant la déclaration de la classe "Film" dans le fichier "film.h" (parce que vous faite des références croisées entre classes, je comprend pas pourquoi vous vous faite chier avec ça)
    - Sortir la ligne "AffichagePersonnalisation getCurrentAffichagePersonnalisation();" de l'intérieur de la déclaration de la classe "AffichagePersonnalisation" dans "film_serie.h", pour qu'elle corresponde à la définition de la fonction dans "film_serie.cpp".
    Pouvez-vous expliquer, mais simple !!!

    Voici :
    https://learn.microsoft.com/fr-fr/cp...5)%26rd%3Dtrue ???

    https://learn.microsoft.com/fr-fr/cp...9)%26rd%3Dtrue ???
    Dure à dire !!!

    Merci vraiment

  12. #932
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    707
    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 : 707
    Points : 0
    Points
    0
    Par défaut
    Nom : Capture d’écran 2024-11-01 155410.png
Affichages : 36
Taille : 11,8 Ko

  13. #933
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 278
    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 278
    Points : 12 507
    Points
    12 507
    Par défaut
    Le message de l'éditeur de lien est pourtant explicite :
    1>film_serie.obj : error LNK2005: "class AffichagePersonnalisation __cdecl getCurrentAffichagePersonnalisation(void)" (?getCurrentAffichagePersonnalisation@@YA?AVAffichagePersonnalisation@@XZ) déjà défini(e) dans film.obj
    1>C:\Users\pbacelar\Documents\GitHub\Exemple\x64\Debug\Exemple.exe : fatal error LNK1169: un ou plusieurs symboles définis à différentes reprises ont été rencontrés
    Vous avez la fonction "getCurrentAffichagePersonnalisation()" défini à 2 endroits ; dans film_serie.obj et dans film.obj.

    Ligne 817 de film_serie.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AffichagePersonnalisation getCurrentAffichagePersonnalisation()
    {...}
    Ligne 57 de film.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    AffichagePersonnalisation getCurrentAffichagePersonnalisation()
    {...}
    On est sensé utiliser laquelle de ces fonctions ?

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

    https://github.com/laurentbouleau/Exemple : Novembre 02 (02/11/2024)

    Par contre (film_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
    AffichagePersonnalisation getCurrentAffichagePersonnalisation()
    {
        // _
        const std::pair<std::wstring, std::wstring> m_espace1{ L"", L" " };
        // _
        const std::pair<std::wstring, std::wstring> m_espace2{L"", L" "};
        // _
        const std::pair <std::wstring, std::wstring> m_espace3{ L"", L" " };
     
        auto& r_e_1_0 = m_espace1.first, & r_e_1_1 = m_espace1.second;
        auto& r_e_2_0 = m_espace2.first, & r_e_2_1 = m_espace2.second;
        auto& r_e_3_0 = m_espace3.first, & r_e_3_1 = m_espace3.second;
     
        // h
        std::vector<std::pair<std::wstring, std::wstring>> m_labelsHeure{ { L"h", L"h" },            // 0
                                                                        { L"H", L"h" },            // 1
                                                                        { L"heure", L"heures" },   // 2
                                                                        { L"Heure", L"Heures" },   // 3
                                                                        { L"HEURE", L"HEURES" } }; // 4
     
        auto& r_lH_0{ m_labelsHeure[0] };
        auto& r_lH_1{ m_labelsHeure[1] };
        auto& r_lH_2{ m_labelsHeure[2] };
        auto& r_lH_3{ m_labelsHeure[3] };
        auto& r_lH_4{ m_labelsHeure[4] };
     
        // min
        std::vector<std::pair<std::wstring, std::wstring>> m_labelsMinute{ { L"min", L"min" },          // 0
                                                                         { L"Min", L"Min" },          // 1
                                                                         { L"MIN", L"MIN" },          // 2
                                                                         { L"minute", L"minutes" },   // 3
                                                                         { L"Minute", L"Minutes" },   // 4
                                                                         { L"MINUTE", L"MINUTES" } }; // 5
     
        auto& r_lM_0{ m_labelsMinute[0] };
        auto& r_lM_1{ m_labelsMinute[0] };
        auto& r_lM_2{ m_labelsMinute[0] };
        auto& r_lM_3{ m_labelsMinute[0] };
        auto& r_lM_4{ m_labelsMinute[0] };
        auto& r_lM_5{ m_labelsMinute[0] };
     
        //
        std::vector<std::wstring> m_keyColor{ L"\x1b[94;1m", L"\x1b[38;2;0;255;0m", L"\x1b[38;2;255;0;0m", L"\x1b[38;2;255;255;0m" };
        std::wstring m_valuesColor{ L"\x1b[38;2;255;255;255m" }; // Blanc
     
        return AffichagePersonnalisation();
    }
    ???

    Après :
    0 (l'ensemble de ce qui a été capturé par l'expression régulière): (((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)(\s(.+))?
    1 : ((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)
    2 : (([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))
    3 : ([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})
    4 : [[:digit:]]{4}
    5 : [[:digit:]]{2}
    6 : [[:digit:]]{2}
    7 : [[:digit:]]{2}
    8 : [[:digit:]]{2}
    9 : [[:digit:]]{2}
    10 : _?
    ...
    Merci beaucoup

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

    https://github.com/laurentbouleau/Exemple : Novembre 04 (02/11/2024)

    film_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
    AffichagePersonnalisation getCurrentAffichagePersonnalisation()
    {
        // _
        const std::pair<std::wstring, std::wstring> m_espace1{ L"", L" " };
        // _
        const std::pair<std::wstring, std::wstring> m_espace2{L"", L" "};
        // _
        const std::pair <std::wstring, std::wstring> m_espace3{ L"", L" " };
        // h
        std::vector<std::pair<std::wstring, std::wstring>> m_labelsHeure{ { L"h", L"h" },            // 0
                                                                          { L"H", L"h" },            // 1
                                                                          { L"heure", L"heures" },   // 2
                                                                          { L"Heure", L"Heures" },   // 3
                                                                          { L"HEURE", L"HEURES" } }; // 4
        // min
        std::vector<std::pair<std::wstring, std::wstring>> m_labelsMinute{ { L"min", L"min" },          // 0
                                                                           { L"Min", L"Min" },          // 1
                                                                           { L"MIN", L"MIN" },          // 2
                                                                           { L"minute", L"minutes" },   // 3
                                                                           { L"Minute", L"Minutes" },   // 4
                                                                           { L"MINUTE", L"MINUTES" } }; // 5
        //
        std::vector<std::wstring> m_keyColor{ L"\x1b[94;1m", L"\x1b[38;2;0;255;0m", L"\x1b[38;2;255;0;0m", L"\x1b[38;2;255;255;0m" };
        std::wstring m_valuesColor{ L"\x1b[38;2;255;255;255m" }; // Blanc
     
        return AffichagePersonnalisation();
    }
    Ok !

    Mais (film.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
    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
    SequenceVisionnage_film::SequenceVisionnage_film(fs::path const& m_cheminFichier)
    {
        const std::wstring date_year_month_day_format = L"([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})";
        const std::wstring date_month_day_format = L"([[:digit:]]{2})-([[:digit:]]{2})";
        const std::wstring date_day_format = L"([[:digit:]]{2})";
        const std::wstring stream_format = L"(\\s(.+))?";
        const std::wstring dates_format = L"((" + date_year_month_day_format + L"|" + date_month_day_format + L"|" + date_day_format + L")(_?))";
     
        const int dates_full_match_index = 0;
        const int dates_date_year_month_day_year_index = dates_full_match_index + 3;
        const int dates_date_year_month_day_month_index = dates_date_year_month_day_year_index + 1;
        const int dates_date_year_month_day_day_index = dates_date_year_month_day_month_index + 1;
        const int dates_date_month_day_month_index = dates_date_year_month_day_day_index + 1;
        const int dates_date_month_day_day_index = dates_date_month_day_month_index + 1;
        const int dates_date_day_day_index = dates_date_month_day_day_index + 1;
        const int dates_someFlag_index = dates_date_day_day_index + 2;
     
        const int dates_full_match_index_f = 0;
        const int dates_date_year_month_day_year_index_f = dates_full_match_index + 3;
        const int dates_date_year_month_day_month_index_f = dates_date_year_month_day_year_index + 1;
        const int dates_date_year_month_day_day_index_f = dates_date_year_month_day_month_index + 1;
        const int dates_date_month_day_month_index_f = dates_date_year_month_day_day_index + 1;
        const int dates_date_month_day_day_index_f = dates_date_month_day_month_index + 1;
        const int dates_date_day_day_index_f = dates_date_month_day_day_index + 1;
        const int dates_someFlag_index_f = dates_date_day_day_index + 2;
     
    //    const std::wregex filename_format_rg{ L"(" + dates_format + L"+)" + stream_format };
     
        const std::wregex filename_format_rg{ L"(((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)(\\s(.+))?" };
     
        const int filename_dates_index = 0;
        const int filename_date_year_month_day_year_index = filename_dates_index + 2;
        const int filename_date_year_month_day_month_index = filename_date_year_month_day_year_index + 1;
        const int filename_date_year_month_day_day_index = filename_date_year_month_day_month_index + 1;
        const int filename_date_month_day_month_index = filename_date_year_month_day_day_index + 1;
        const int filename_date_month_day_day_index = filename_date_month_day_month_index + 1;
        const int filename_date_day_day_index = filename_date_month_day_day_index + 1;
        const int filename_someFlag_index = filename_date_day_day_index + 2;
        const int filename_stream_index = filename_someFlag_index + 2;
     
        auto nomFichier = m_cheminFichier.wstring();
     
        assert(nomFichier.length() > 0 && L"Nom de fichier Film vide");
     
        auto stem = m_cheminFichier.stem().wstring();
        // prefixe ???
        assert(std::regex_match(stem, filename_format_rg) && L"Le nom du fichier n'est pas valide");
        std::wsmatch match;
        auto str = stem;
        //Exemple assez complexe de nom de fichier
        std::regex_match(str, match, filename_format_rg);
     
        std::wsmatch dates_match;
        auto dates_str = match[filename_dates_index].str();
        while (std::regex_search(dates_str, dates_match, std::wregex{ dates_format }))
        {
            if (dates_match[dates_date_year_month_day_year_index].matched)
            {
                auto year = std::stoi(dates_match[dates_date_year_month_day_year_index]);
                auto month = std::stoi(dates_match[dates_date_year_month_day_month_index]);
                auto day = std::stoi(dates_match[dates_date_year_month_day_day_index]);
     
                assert(checkyear(year));
                assert(checkmonth(month));
                assert(checkday(month, day, year));
     
                DateRecord dr{ {0,0,0,day,month - 1,year - 1900} };
     
                m_DatesVisionnage.emplace_back(dr);
            }
            else if (dates_match[dates_date_month_day_month_index].matched)
            {
                assert(m_DatesVisionnage.size() > 0 && L"Utilisation d'un format mois-jour sans avoir d'année déduite.");
     
                auto month = std::stoi(dates_match[dates_date_month_day_month_index]);
                auto day = std::stoi(dates_match[dates_date_month_day_day_index]);
     
                auto lastDateRecord = m_DatesVisionnage.back();
                auto last_year = lastDateRecord.date.tm_year + 1900;
     
                assert(checkmonth(month));
                assert(checkday(month, day, last_year));
     
                DateRecord dr{ {0,0,0,day,month - 1,last_year - 1900} };
     
                m_DatesVisionnage.emplace_back(dr);
            }
            else if (dates_match[dates_date_day_day_index].matched)
            {
                assert(m_DatesVisionnage.size() > 0 && L"Utilisation d'un format jour sans avoir de mois et d'années déduits.");
     
                auto day = std::stoi(dates_match[dates_date_day_day_index]);
     
                auto lastDateRecord = m_DatesVisionnage.back();
                auto last_year = lastDateRecord.date.tm_year + 1900;
                auto last_month = lastDateRecord.date.tm_mon + 1;
     
                assert(checkday(last_month, day, last_year));
     
                DateRecord dr{ {0,0,0,day,last_month - 1,last_year - 1900} };
     
                m_DatesVisionnage.emplace_back(dr);
            }
            else
            {
                assert(true && L"format de date film inconnu.");
            }
     
            if (dates_match[dates_someFlag_index].matched)
            {
                m_DatesVisionnage.back().someFlag = true;
            }
     
            dates_str = dates_match.suffix().str();
        }
     
        if (match[filename_stream_index].matched)
        {
            m_streaming = match[filename_stream_index];
        }
    }
    Problème !!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    const std::wstring date_year_month_day_format = L"([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})";
        const std::wstring date_month_day_format = L"([[:digit:]]{2})-([[:digit:]]{2})";
        const std::wstring date_day_format = L"([[:digit:]]{2})";
        const std::wstring stream_format = L"(\\s(.+))?";
        const std::wstring dates_format = L"((" + date_year_month_day_format + L"|" + date_month_day_format + L"|" + date_day_format + L")(_?))";
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    //    const std::wregex filename_format_rg{ L"(" + dates_format + L"+)" + stream_format };
     
        const std::wregex filename_format_rg{ L"(((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)(\\s(.+))?" };
    Expliquez-moi ???
    date_month_day_format, date_month_day_format, date_day_format et stream_format ???

    Je suis perdu !!!

    Ici : https://regex101.com/r/nS4Yei/1

    Merci

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

    https://github.com/laurentbouleau/Exemple : Novembre 05 (03/11/2024)

    Exemple.cppp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ...
            serie.AffichagePersonnaliser_Serie(person);
            serie.Print();
    ...
    film_serie.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    ...
    AffichagePersonnalisation getCurrentAffichagePersonnalisation();
     
    class AffichagePersonnalisation
    {
    public:
        std::pair<std::wstring, std::wstring> m_espace1{ L"", L" " };
        std::pair<std::wstring, std::wstring> m_espace2{ L"", L" " };
        std::pair<std::wstring, std::wstring> m_espace3{ L"", L" " };
        // h
        std::vector<std::pair<std::wstring, std::wstring>> m_labelsHeure{ { L"h", L"h" },            // 0
                                                                        { L"H", L"h" },            // 1
                                                                        { L"heure", L"heures" },   // 2
                                                                        { L"Heure", L"Heures" },   // 3
                                                                        { L"HEURE", L"HEURES" } }; // 4
     
        // min
        std::vector<std::pair<std::wstring, std::wstring>> m_labelsMinute{ { L"min", L"min" },          // 0
                                                                         { L"Min", L"Min" },          // 1
                                                                         { L"MIN", L"MIN" },          // 2
                                                                         { L"minute", L"minutes" },   // 3
                                                                         { L"Minute", L"Minutes" },   // 4
                                                                         { L"MINUTE", L"MINUTES" } }; // 5
        //
        std::vector<std::wstring> m_keyColor{ L"\x1b[94;1m", L"\x1b[38;2;0;255;0m", L"\x1b[38;2;255;0;0m", L"\x1b[38;2;255;255;0m" };
        std::wstring m_valuesColor{ L"\x1b[38;2;255;255;255m" }; // Blanc
    };
    serie.h :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    class Serie
    {
    ...
    private:
    ...
        std::wstring m_min = L"min";
        //std::vector<std::wstring>m_keyColor{ L"\x1b[94;1m", L"\x1b[38;2;0;255;0m" }; // keyColor[0] (bleu) et keyColor[1] (vert)
        //std::wstring m_valuesColor = L"\x1b[38;2;255;255;255m"; // Blanc
     
        std::wstring m_espace1;
        std::wstring m_labelHeureSingulier;
        std::wstring m_labelHeurePluriel;
        std::wstring m_espace2;
        std::wstring m_espace3;
        std::wstring m_labelMinuteSingulier;
        std::wstring m_labelMinutePluriel;
        std::vector<std::wstring>m_keyColor;
        std::wstring m_valuesColor;
    ...
    };
    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
    ...
    std::wstring Serie::calcul_Duree_affichage() const
    {
        // Durée
        std::wstring duree_str;
        if (affichage_duree_actif)
        {
            //duree_str = L' ' + std::to_wstring(m_duree / 60) + m_keyColor[0] + L"min" + m_valuesColor;
            long minutes = (m_duree % (60 * 60)) / 60;
            long secondes = m_duree % 60;
            duree_str = L' ' + /*std::to_wstring(heures) + m_keyColor[0] + m_espace1 + (heures <= 1 ? m_labelHeureSingulier : m_labelHeurePluriel) + m_valuesColor + m_espace2 +*/
                std::to_wstring(minutes) + m_keyColor[0] + m_espace3 + (minutes <= 1 ? m_labelMinuteSingulier : m_labelMinutePluriel) + m_valuesColor;
        }
        return duree_str;
    }
    ...
    Ok !

    Mais :
    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
    ...
    void SequenceVisionnage::Print()
    {
    ...
        if (m_numero == 1) // ???
        {
            //duree_str += m_keyColor[1] + L" (" + m_valuesColor + std::to_wstring(m_duree_en_seconde / 60) + m_keyColor[1] + m_min + L')' + m_valuesColor;
            long minutes = (m_duree % (60 * 60)) / 60;
            long secondes = m_duree % 60;
            duree_str += /*L' ' + std::to_wstring(heures) + m_keyColor[0] + m_espace1 + (heures <= 1 ? m_labelHeureSingulier : m_labelHeurePluriel) + m_valuesColor + m_espace2 +*/
                m_keyColor[1] + L" (" + m_valuesColor + std::to_wstring(minutes) + m_keyColor[1] + m_espace3 + (minutes <= 1 ? m_labelMinuteSingulier : m_labelMinutePluriel) + L')' + m_valuesColor;
        }
        else
        {
            //duree_str += keyColor[1] + L" [" + valuesColor + std::to_wstring(m_numero++) + keyColor[1] + L']' + valuesColor;
            duree_str += m_keyColor[1] + L" [" + m_valuesColor + std::to_wstring(m_numero) + m_keyColor[1] + L']' + m_valuesColor;
            //wstr += keyColor[1] + L" [" + valuesColor + std::to_wstring(m_saison_episode.m_numero++) + keyColor[1] + L']' + valuesColor;
            //wstr += keyColor[1] + L" [" + valuesColor + std::to_wstring(m_saison.m_numero++) + keyColor[1] + L']' + valuesColor;
            //wstr += keyColor[1] + L" [" + valuesColor + std::to_wstring(1 + saison_episode.numero++) + keyColor[1] + L']' + valuesColor;
    //        m_numero++;
            //m_NumeroSaison++;
        }
    ...
    }
    Comment faire ?

    Et :
    Expliquez-moi ???
    date_month_day_format, date_month_day_format, date_day_format et stream_format ???

    Je suis perdu !!!
    ???

    Merci

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

    https://github.com/laurentbouleau/Exemple : Novembre 06 (03/11/2024)

    film.cpp et 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 void SequenceVisionnage_film::AffichagePersonnaliser_Film(AffichagePersonnalisation perso)
    {
    ...
    }
    ...
    const void Film::AffichagePersonnaliser_Film(AffichagePersonnalisation perso)
    {
    ...
    }
    ...
    const void Serie::AffichagePersonnaliser_Serie(AffichagePersonnalisation perso)
    {
    ...
    }
    Ok ! Mais, bon ! Pouvez-vous expliquer ?
    Par exemple :
    const void SequenceVisionnage_film::AffichagePersonnaliser_Film(AffichagePersonnalisation perso)
    Par :
    • Set(...) ou
    • Get(...)

    Ainsi :
    const void Serie::AffichagePersonnaliser_Serie(AffichagePersonnalisation perso) ===> struct Saison, struct Episode, struct SequenceVisionnage et struct InfosVisionnage !!!

    Merci d'avance

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

    Ni Set(...), ni Get(...) !!!

    Et sans std::wstring Print_Dates_de_visionnage(std::vector<DateRecord>& m_DatesVisionnage) !!!

    https://github.com/laurentbouleau/Exemple : Novembre 07 (04/11/2024)

    Merci

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

    https://github.com/laurentbouleau/Exemple : Novembre 09 (05/11/2024)

    Avec film_serie.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    std::vector<std::pair<std::wstring, std::wstring>> initialiser_Avec(fs::path const& cheminFichier)
    {
        auto nomFichier = cheminFichier.filename().wstring();
        assert(nomFichier.length() > 0 && L"Nom de fichier vide");
        std::vector<std::pair<std::wstring, std::wstring>> avec = lire_paireCleValeur_depuisFichierTxt(cheminFichier.wstring());
        return avec;
    }
    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    void Film::initialiser_Fichier(fs::path const& cheminFichier)
    {
    ...
        if (nomFichier == L"Acteurs de doublage (Voix originales).txt")
        {
            m_acteurs_de_doublage_voix_originales = initialiser_Avec(cheminFichier);
        }
    ...
        else if (nomFichier == L"Avec.txt")
        {
            m_avec = initialiser_Avec(cheminFichier);
        }
    ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Saison::initialiser_Fichier(fs::path const& cheminFichier)
    {
    ...
                if (nomFichier == L"Avec.txt")
                {
                    m_avec = initialiser_Avec(cheminFichier);
                }
    ...
    }
    Merci

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

    https://github.com/laurentbouleau/Exemple : Novembre 10 (05/11/2024)
    Rien compris !!!
    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
     
    SequenceVisionnage_film::SequenceVisionnage_film(fs::path const& m_cheminFichier)
    {
        /*const std::wstring date_year_month_day_format = L"([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})";
        const std::wstring date_month_day_format = L"([[:digit:]]{2})-([[:digit:]]{2})";
        const std::wstring date_day_format = L"([[:digit:]]{2})";
        const std::wstring stream_format = L"(\\s(.+))?";
        const std::wstring dates_format = L"((" + date_year_month_day_format + L"|" + date_month_day_format + L"|" + date_day_format + L")(_?))";
        const std::wregex filename_format_rg{ L"(" + dates_format + L"+)" + stream_format };
        */
        // (((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)(\s(.+))?
     
     
        const std::wregex filename_format_rg{ L"(((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)(\\s(.+))?" };
     
        const int filename_dates_index = 0;
        const int filename_date_year_month_day_year_index = filename_dates_index + 2;
        const int filename_date_year_month_day_month_index = filename_date_year_month_day_year_index + 1;
        const int filename_date_year_month_day_day_index = filename_date_year_month_day_month_index + 1;
        const int filename_date_month_day_month_index = filename_date_year_month_day_day_index + 1;
        const int filename_date_month_day_day_index = filename_date_month_day_month_index + 1;
        const int filename_date_day_day_index = filename_date_month_day_day_index + 1;
        const int filename_someFlag_index = filename_date_day_day_index + 2;
        const int filename_stream_index = filename_someFlag_index + 2;
     
        auto nomFichier = m_cheminFichier.wstring();
     
        assert(nomFichier.length() > 0 && L"Nom de fichier Film vide");
     
        auto stem = m_cheminFichier.stem().wstring();
        // prefixe ???
        assert(std::regex_match(stem, filename_format_rg) && L"Le nom du fichier n'est pas valide");
        std::wsmatch match;
        auto str = stem;
        //Exemple assez complexe de nom de fichier
        std::regex_match(str, match, filename_format_rg);
     
        std::wsmatch dates_match;
        auto dates_str = match[filename_dates_index].str();
        while (std::regex_search(dates_str, dates_match, std::wregex{ L"((([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))(_?))+)" }));
        {
            if (dates_match[/*dates_date_year_month_day_year_index*/L"(([[:digit:]]{4})-([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2})-([[:digit:]]{2})|([[:digit:]]{2}))"].matched)
            {
                auto year = std::stoi(dates_match[/*dates_date_year_month_day_year_index*/L"[[:digit:]]{4}"]);
                auto month = std::stoi(dates_match[/*dates_date_year_month_day_month_index*/L"[[:digit:]]{2}"]);
                auto day = std::stoi(dates_match[/*dates_date_year_month_day_day_index*/L"[[:digit:]]{2}"]);
     
                assert(checkyear(year));
                assert(checkmonth(month));
                assert(checkday(month, day, year));
     
                DateRecord dr{ {0,0,0,day,month - 1,year - 1900} };
     
                m_DatesVisionnage.emplace_back(dr);
            }
            else if (dates_match[dates_date_month_day_month_index].matched)
            {
                assert(m_DatesVisionnage.size() > 0 && L"Utilisation d'un format mois-jour sans avoir d'année déduite.");
     
                auto month = std::stoi(dates_match[dates_date_month_day_month_index]);
                auto day = std::stoi(dates_match[dates_date_month_day_day_index]);
     
                auto lastDateRecord = m_DatesVisionnage.back();
                auto last_year = lastDateRecord.date.tm_year + 1900;
     
                assert(checkmonth(month));
                assert(checkday(month, day, last_year));
     
                DateRecord dr{ {0,0,0,day,month - 1,last_year - 1900} };
     
                m_DatesVisionnage.emplace_back(dr);
            }
            else if (dates_match[dates_date_day_day_index].matched)
            {
                assert(m_DatesVisionnage.size() > 0 && L"Utilisation d'un format jour sans avoir de mois et d'années déduits.");
     
                auto day = std::stoi(dates_match[dates_date_day_day_index]);
     
                auto lastDateRecord = m_DatesVisionnage.back();
                auto last_year = lastDateRecord.date.tm_year + 1900;
                auto last_month = lastDateRecord.date.tm_mon + 1;
     
                assert(checkday(last_month, day, last_year));
     
                DateRecord dr{ {0,0,0,day,last_month - 1,last_year - 1900} };
     
                m_DatesVisionnage.emplace_back(dr);
            }
            else
            {
                assert(true && L"format de date film inconnu.");
            }
     
            if (dates_match[dates_someFlag_index].matched)
            {
                m_DatesVisionnage.back().someFlag = true;
            }
     
            dates_str = dates_match.suffix().str();
        }
     
        if (match[filename_stream_index].matched)
        {
            m_streaming = match[filename_stream_index];
        }
    }
    Comme faire ???

    Merci vraiment

+ 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