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. #941
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 258
    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 258
    Points : 12 471
    Points
    12 471
    Par défaut
    Post du "02/11/2024, 13h19"

    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();
    }

    A quoi sert tout ce bordel qui est avant la dernière ligne avec le "return" ???

    J'ai l'impression que vous avez 5/6 personnalisations possibles.
    Alors, pourquoi ne pas créer 5/6 objets de type AffichagePersonnalisation ; et les passer aux fonctions "AffichagePersonnaliser_X" si nécessaire ???
    Et faire en sorte que la classe "AffichagePersonnalisation" ne contiennent qu'une personnalisation et pas 5 ou 6.
    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
    class AffichagePersonnalisation
    {
    public:
        AffichagePersonnalisation() {};
        AffichagePersonnalisation(std::wstring espace, std::pair<std::wstring, std::wstring> labelsHeure, std::pair<std::wstring, std::wstring> labelsMinute) :
            m_espace1(espace), m_espace2(espace), m_espace3(espace), m_labelsHeure(labelsHeure), m_labelsMinute(labelsMinute) {};
     
        std::wstring m_espace1{ L" " };
        std::wstring m_espace2{ L" " };
        std::wstring m_espace3{ L" " };
     
        std::pair<std::wstring, std::wstring> m_labelsHeure{ L"h", L"h" };
        std::pair<std::wstring, std::wstring> m_labelsMinute{ L"min", L"min" };
     
        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" };
    };
    ...
    ...
    ...
     
    const void SequenceVisionnage_film::AffichagePersonnaliser_Film(AffichagePersonnalisation perso)
    {
        m_espace1 = perso.m_espace1;
        m_labelHeureSingulier = perso.m_labelsHeure.first;
        m_labelHeurePluriel = perso.m_labelsHeure.second;
        m_espace2 = perso.m_espace2;
        m_espace3 = perso.m_espace3;
        m_labelMinuteSingulier = perso.m_labelsMinute.first;
        m_labelMinutePluriel = perso.m_labelsMinute.second;
     
        m_keyColor = perso.m_keyColor;
        m_valuesColor = perso.m_valuesColor;
    }
    ...
    ...
    ...
    const void Film::AffichagePersonnaliser_Film(AffichagePersonnalisation perso)
    {
        m_espace1 = perso.m_espace1;
        m_labelHeureSingulier = perso.m_labelsHeure.first;
        m_labelHeurePluriel = perso.m_labelsHeure.second;
        m_espace2 = perso.m_espace2;
        m_espace3 = perso.m_espace3;
        m_labelMinuteSingulier = perso.m_labelsMinute.first;
        m_labelMinutePluriel = perso.m_labelsMinute.second;
     
        m_keyColor = perso.m_keyColor;
        m_valuesColor = perso.m_valuesColor;
    }
    ...
    ...
    ...
    const void Serie::AffichagePersonnaliser_Serie(AffichagePersonnalisation perso)
    {
        m_espace1 = perso.m_espace1;
        m_labelHeureSingulier = perso.m_labelsHeure.first;
        m_labelHeurePluriel = perso.m_labelsHeure.second;
        m_espace2 = perso.m_espace2;
        m_espace3 = perso.m_espace3;
        m_labelMinuteSingulier = perso.m_labelsMinute.first;
        m_labelMinutePluriel = perso.m_labelsMinute.second;
     
        m_keyColor = perso.m_keyColor;
        m_valuesColor = perso.m_valuesColor;
    }
    Putain de copier-coller qui fait qu'on doit faire des modifications partout à la moindre "amélioration" du code.
    Arrêtez les copier-coller !!!

    Exemple d'utilisation :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    ...
    AffichagePersonnalisation perso_short_minuscule = AffichagePersonnalisation{};
    AffichagePersonnalisation perso_short_majuscule = AffichagePersonnalisation{L"", { L"H", L"H" },{ L"MIN", L"MIN" }};
    AffichagePersonnalisation perso_short_pascalCase = AffichagePersonnalisation{L"", { L"H", L"H" },{ L"Min", L"Min" }};
    AffichagePersonnalisation perso_long_minuscule = AffichagePersonnalisation{L"", { L"heure", L"heures" },{ L"minute", L"minutes" }};
    AffichagePersonnalisation perso_long_majuscule = AffichagePersonnalisation{L"", { L"HEURE", L"HEURES" },{ L"MINUTE", L"MINUTES" } };
    AffichagePersonnalisation perso_long_pascalCase = AffichagePersonnalisation{L"", { L"Heure", L"Heures" },{ L"Minute", L"Minutes" }};
    
    AffichagePersonnalisation person = getCurrentAffichagePersonnalisation();//fonction à implémenter pour récupérer la configuration de personnalisation de l'utilisateur.
    ...
    
    // j'ai rien compris à votre gestion des couleurs ni de vos espaces !!!!
    ---------------------

    Post du "02/11/2024, 22h39"

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    AffichagePersonnalisation getCurrentAffichagePersonnalisation()...
    Toujours du code qui sert à rien !!!

    Mais (film.cpp) :
    Pourquoi autant de groupes de constantes qui se répètent ???
    (Dans les versions suivantes du code sous GitHub, ça se calme mais faites attention quand vous ajoutez du code, évitez les copier-coller à l'aveugle.)

    date_year_month_day_format : format d'une date contenant l'année, le mois et le jour
    date_month_day_format : format d'une date contenant le mois et le jour (pas l'année)
    date_day_format : format d'une date contenant juste le jour (pas le mois ni l'année)
    Leur nom et leur valeur ne vous indique pas assez à quoi elles servent ???

    Les autres formats sont construits à partir de ces formats.

    Vous avez "déplié" dans la valeur de la variable "filename_format_rg" les différents formats possibles, mais vous trouverez dedans les valeurs de "date_year_month_day_format", de "date_month_day_format" et de "date_day_format".
    Attention avec cette version dépliée qui est, je trouve, plus compliquée à maintenir (mais c'est vrai que c'est peut-être plus simple pour compter/numéroter les captures).

    Attention, dans vos exemples de test, il y a l'extension du nom du fichier.
    Dans le code, c'est la partie "stem" (la tige : nom du fichier sans l'extension) du nom du fichier qui est utilisé.
    Mais cela montre bien comment les captures (group) se numérotent et aussi que le nom du "stream" est dans la capture 12, pas 11.

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

    Post du "03/11/2024, 13h27"

    Pourquoi ajouter "_Film" ou "_Serie" à des noms de fonction qui font déjà partie de la classe Film ou de la classe Serie ???
    Ca sert juste à complexifier le code.
    Ces fonctions "Personnalisent l'affichage", point barre.
    Donc appelez ces fonctions "AffichagePersonnaliser" tout court !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void SequenceVisionnage::Print()
    {
    ...
        if (m_numero == 1) // ???
        {
    C'est quoi ce numéro à la con qui se balade et qui s'incrémente à chaque appel de la fonction "Print", en commençant à -1 ???
    Réfléchissez avant d'implémenter un truc sans queue ni tête.

    Et pourquoi mettre dans la variable "duree_str" un truc qui n'a rien à voir avec l'affichage de la durée ?
    Vous aimez bien vous tirer des balles dans le pied ???

    C'est quoi ce numéro ?
    Pourquoi doit-il changer au cour de la "vie" de l'objet et pas fixe depuis sa création ?

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

    Post du "03/11/2024, 23h03"

    Idem : Pourquoi ajouter "_Film" ou "_Serie" à des noms de fonction qui font déjà partie de la classe Film ou de la classe Serie ???

    Ok ! Mais, bon ! Pouvez-vous expliquer ?
    Par exemple :
    const void SequenceVisionnage_film::AffichagePersonnaliser_Film(AffichagePersonnalisation perso)
    Par :
    Set(...) ou
    Get(...)
    Expliquer QUOI, SVP ?
    On veut personnaliser l'affichage d'un objet, bin on crée une fonction "AffichagePersonnaliser" membre de la classe de l'objet, et on passe en paramètre de quoi "personnaliser son affichage", c'est tout.
    Si la classe de l'objet avant un champ "PersonnalisationDeLAffichage", on pourrait renommer "AffichagePersonnaliser" en "SetPersonnalisationDeLAffichage" mais quid du type de ce champ ?
    "AffichagePersonnaliser" est moins invasif sur la structure interne de l'objet qu'une fonction nommée "SetPersonnalisationDeLAffichage", qui impose logiquement (c'est pas une obligation, mais c'est plus "logique") un champ nommé "m_PersonnalisationDeLAffichage".
    Pensez une classe comme un fournisseur de services et la fonction "AffichagePersonnaliser" comme un service qui permet de personnaliser l'affichage de l'objet.

    Je tiens quand même à dire que, depuis le début, je vous préviens que le code d'affichage de ces objet n'a rien à foutre dans ces objets/classes (qui sont des objets/classes "métier", et pas des classes pour Interface Homme-Machine).

    Ainsi :
    const void Serie::AffichagePersonnaliser_Serie(AffichagePersonnalisation perso) ===> struct Saison, struct Episode, struct SequenceVisionnage et struct InfosVisionnage !!!
    Putain, arrêtez de mettre des "const" devant des "void" ou des "class", ça n'a aucun putain de sens, BORDEL !!!
    Quelle est la question ?
    Si c'est comment faire en sorte que la personnalisation d'affichage d'un objet "Serie" se propage aux objets qu'il "gèrent".
    Le plus naturel, c'est de propager cette personnalisation à ces objets :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    const void Serie::AffichagePersonnaliser(AffichagePersonnalisation& perso)
    {
    ...
         for (auto& saison : saisons)
        {
            saison.AffichagePersonnaliser(perso);
        }   
    }
    (Attention, ici, on ne gère pas si une saison est ajoutée après la personnalisation de l'affichage de la série : revoir le Design de la classe pour cela)
    Et ainsi de suite.
    Mais le plus simple, c'est que ces objets ne gèrent pas leur affichage !!!
    ---------------------

    Post du "04/11/2024, 15h59"

    Bonjour,

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

    Et sans std::wstring Print_Dates_de_visionnage(std::vector<DateRecord>& m_DatesVisionnage) !!!
    Quelle est la question ???
    Pourquoi supprimer une des rares fonctions qui n'est pas un simple copier-coller d'une autre, et qui apporte un vrai "plus" ???
    ---------------------

    Post du "05/11/2024, 10h58"

    Il faudrait renommer la fonction "initialiser_Avec" avec un nom plus correct.
    Comme "extraireListeDePaireDepuisContenuFichier", non ?
    Peu de Valeur Ajoutée à la fonction "lire_paireCleValeur_depuisFichierTxt", non ?

    Mais vous avez eu le réflexe de factoriser le code, c'est très très bien !!!
    ---------------------

    Post du "05/11/2024, 22h48"

    C'est complètement nimportnawak.
    Reprenez l'ancien code et ne corrigez que la valeur d'une seule constante.
    Votre post du "02/11/2024, 22h39" donne mais le moyen de vérifier les valeurs de ces constantes !!!

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

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

    Post du "02/11/2024, 13h19"
    ...
    A quoi sert tout ce bordel qui est avant la dernière ligne avec le "return" ???
    ...
    J'ai l'impression que vous avez 5/6 personnalisations possibles.
    Alors, pourquoi ne pas créer 5/6 objets de type AffichagePersonnalisation ; et les passer aux fonctions "AffichagePersonnaliser_X" si nécessaire ???
    Et faire en sorte que la classe "AffichagePersonnalisation" ne contiennent qu'une personnalisation et pas 5 ou 6.
    ...
    Putain de copier-coller qui fait qu'on doit faire des modifications partout à la moindre "amélioration" du code.
    Arrêtez les copier-coller !!!

    Exemple d'utilisation :
    Exemple : 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
    const void Film::AffichagePersonnaliser_Film(AffichagePersonnalisation perso)
    {
        //m_espace1 = perso.m_espace1;
        m_labelHeureSingulier = perso.m_labelsHeure.first;
        m_labelHeurePluriel = perso.m_labelsHeure.second;
        //m_espace2 = perso.m_espace2;
        //m_espace3 = perso.m_espace3;
        m_labelMinuteSingulier = perso.m_labelsMinute.first;
        m_labelMinutePluriel = perso.m_labelsMinute.second;
    
        m_keyColor = perso.m_keyColor;
        m_valuesColor = perso.m_valuesColor;
    
        m_espace1 = L"";
        m_espace2 = perso.m_espace2;
        m_espace3 = L"";
    }
    et :
    Nom : Capture d’écran 2024-11-07 224854.png
Affichages : 63
Taille : 828 octets
    Alors :
    2H_15Min
    Donc, problème !!!

    Je suis fatigué !!!

    Merci beaucoup

  3. #943
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 258
    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 258
    Points : 12 471
    Points
    12 471
    Par défaut
    Les modification que vous avez fait sur la fonction "Film::AffichagePersonnaliser_Film", c'est quasi de l'auto-sabotage.

    Il ne faut pas planquer des trucs dans des fonctions juste parce que l'effet escompté peut, potentiellement, par coup de chance, correspondre, par grand vent, à un effet "désirable".

    La fonction "Film::AffichagePersonnaliser_Film" doit personnaliser l'affichage du film.
    Si les champs de Film "m_espace1" et "m_espace3" sont personnalisables, la fonction "Film::AffichagePersonnaliser_Film" doit les modifier avec le contenu du paramètre "perso".
    Si ces champs ne sont pas personnalisables, il ne devrait pas avoir ce champ "m_espace1" et "m_espace3" dans la classe "AffichagePersonnalisation".
    (Putain que ces m_espaceX m'énerve, donnez des noms avec du sens, bordel)
    Avant de faire la moindre modification dans une fonction, vous devez absolument vérifier que ces modifications ne sont pas en contradiction avec ce que "dit/signifie" le nom de la fonction.
    Sinon vous allez tourner en rond indéfiniment.

    Donc, si on reprend la version que je vous ai fourni.
    Il y a un problème dans le fait que vous voulez une personnalisation où "m_espace1" et "m_espace3" doivent être vides et "m_espace2" égale à " ".

    Comme je ne comprend rien à votre fixette sur la "personnalisation de l'affichage", j'ai fait la "conception" de la classe "AffichagePersonnalisation" au plus simple.
    Donc les champs "m_espace1", "m_espace2" et "m_espace3" ont tous, par défaut, la même valeur, celui du premier paramètre du constructeur de la classe "AffichagePersonnalisation".
    Vous pouvez remplacer le constructeur ou ajouter un constructeur de la classe "AffichagePersonnalisation" pour prendre un paramètre un triplet de "std::wstring" pour pouvoir initialiser de manière indépendante chacun des champs "m_espace1", "m_espace2" et "m_espace3".
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        AffichagePersonnalisation(std::tuple<std::wstring, std::wstring, std::wstring> espaces, std::pair<std::wstring, std::wstring> labelsHeure, std::pair<std::wstring, std::wstring> labelsMinute) :
            m_espace1{ std::get<0>(espaces) }, m_espace2{ std::get<1>(espaces) }, m_espace3{ std::get<2>(espaces) }, m_labelsHeure{ labelsHeure }, m_labelsMinute{ labelsMinute } {};
    Utilisation du nouveau constructeur :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    ...
    AffichagePersonnalisation perso_short_pascalCase_aLaLaurent = AffichagePersonnalisation{ {L"",L" ",L""}, { L"H", L"H" },{ L"Min", L"Min" } };
    ...
    AffichagePersonnalisation getCurrentAffichagePersonnalisation()
    {
        return AffichagePersonnalisation(perso_short_pascalCase_aLaLaurent);
    }
    Mais vous pouvez aussi modifier l'objet de type "AffichagePersonnalisation" après sa construction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    AffichagePersonnalisation getCurrentAffichagePersonnalisation()
    {
        AffichagePersonnalisation perso = perso_short_pascalCase;
        perso.m_espace2 = " "; 
        return AffichagePersonnalisation(perso);
    }
    P.S.: Attention à l'utilisation des variables globales, c'est très casse-gueule.

  4. #944
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    692
    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 : 692
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Novembre 12 (09/11/2024)

    Ok ou pas ?

    Merci

  5. #945
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 258
    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 258
    Points : 12 471
    Points
    12 471
    Par défaut
    Ok pour moi, rien à redire.

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

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

    Ni _Film(...)
    Ni _Serie(...)
    Ok !

    const void Film::AffichagePersonnaliser(AffichagePersonnalisation perso)
    et
    const void Serie::AffichagePersonnaliser(AffichagePersonnalisation perso)

    Je suis crevé !
    Merci

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

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

    Nom : Capture d’écran 2024-11-11 144228.png
Affichages : 45
Taille : 46,7 Ko
    ???

    Merci beaucoup

  8. #948
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 258
    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 258
    Points : 12 471
    Points
    12 471
    Par défaut
    Normalement, vous devez être capable de corriger ces erreurs :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        for (auto& sequencevisionnage : sequencevisionnages)
        {
            sequencevisionnage.AffichagePersonnaliser(perso);
        }
    C'est qui ce "sequencevisionnages" ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        for (auto& sequencevisionnage : m_liste_sequence_visionnages)
        {
            sequencevisionnage.AffichagePersonnaliser(perso);
        }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        for (auto& episode : episodes)
        {
            episode.AffichagePersonnaliser(perso);
        }
    C'est qui ce "episodes" ???
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        for (auto& episode : m_liste_episodes)
        {
            episode.second->AffichagePersonnaliser(perso);
        }

  9. #949
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    692
    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 : 692
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Novembre 14 (12/11/2024)
    Ok !

    J'excuse !!! J'ai oublié !!! Beaucoup/Rien !!!

    Merci

  10. #950
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    692
    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 : 692
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Novembre 15 (12/11/2024)

    Il faudrait renommer la fonction "initialiser_Avec" avec un nom plus correct.
    Comme "extraireListeDePaireDepuisContenuFichier", non ?
    Peu de Valeur Ajoutée à la fonction "lire_paireCleValeur_depuisFichierTxt", non ?
    Ok ou pas ?

    Merci

  11. #951
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 258
    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 258
    Points : 12 471
    Points
    12 471
    Par défaut
    Ok

  12. #952
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    692
    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 : 692
    Points : 0
    Points
    0
    Par défaut
    Je tiens quand même à dire que, depuis le début, je vous préviens que le code d'affichage de ces objet n'a rien à foutre dans ces objets/classes (qui sont des objets/classes "métier", et pas des classes pour Interface Homme-Machine).
    Pas compris ???

    Donc, class/struct ===> utils.h ???

    Merci

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    SequenceVisionnage_film::SequenceVisionnage_film(fs::path const& m_cheminFichier)
    {
    ...
        const int filename_someFlag_index = filename_date_day_day_index + 2;
        //const int filename_someFlag_index = filename_date_day_day_index + 1;
        const int filename_stream_index = filename_someFlag_index + 2;
        //const int filename_stream_index = filename_someFlag_index + 1;
    ...
        if (match[filename_stream_index].matched)
        {
            m_streaming = match[filename_stream_index];
        }
    }
    Nom : Capture d’écran 2024-11-12 224612.png
Affichages : 43
Taille : 11,2 Ko

    Et pas :
    Nom : Capture d’écran 2024-11-12 225015.png
Affichages : 49
Taille : 10,4 Ko

    ou :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        if (match[filename_stream_index].matched)
        {
            m_streaming = match[filename_stream_index];
        }
    Peu être ???

    Merci

  14. #954
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 258
    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 258
    Points : 12 471
    Points
    12 471
    Par défaut
    Je tiens quand même à dire que, depuis le début, je vous préviens que le code d'affichage de ces objet n'a rien à foutre dans ces objets/classes (qui sont des objets/classes "métier", et pas des classes pour Interface Homme-Machine).
    Pas compris ???

    Donc, class/struct ===> utils.h ???
    Qu'est-ce que vous allez faire si vous voulez une version qui affiche les informations dans une interface graphique et pas dans une console ?
    Refaire tout le travail qui est dans les classes Film, Serie, Saison, SequenceDeVisionnage, etc. ???
    Non, il faudrait que ces classes soient indépendantes de "comment" elles seront affichées.
    Vous avez des classes qui deviennent des mastodontes qui font tout et n'importe quoi.
    Commencez par dégager tout ce qui est dépendant de la console dans des classes dédiées à l'affichage dans une console.

    Ben, non !!!
    Bin non quoi ???
    Quand je teste votre code sur le dépôt Github, j'obtiens la même chose que sur votre 1ère image. Pourquoi la seconde serait plus "juste" ???

  15. #955
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    692
    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 : 692
    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
    SequenceVisionnage_film::SequenceVisionnage_film(fs::path const& m_cheminFichier)
    {
    ...
        const int filename_someFlag_index = filename_date_day_day_index + 2;
        //const int filename_someFlag_index = filename_date_day_day_index + 1;
        //const int filename_stream_index = filename_someFlag_index + 2;
        const int filename_stream_index = filename_someFlag_index + 1;
    ...
        if (match[filename_stream_index].matched)
        {
            m_streaming = match[filename_stream_index];
        }
    }
    Nom : Capture d’écran 2024-11-12 225015.png
Affichages : 49
Taille : 10,4 Ko

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    SequenceVisionnage_film::SequenceVisionnage_film(fs::path const& m_cheminFichier)
    {
    ...
        const int filename_someFlag_index = filename_date_day_day_index + 2;
        //const int filename_someFlag_index = filename_date_day_day_index + 1;
        //const int filename_stream_index = filename_someFlag_index + 2;
        //const int filename_stream_index = filename_someFlag_index + 1;
        const int filename_stream_index = filename_someFlag_index + 3;
    ...
        if (match[filename_stream_index].matched)
        {
            m_streaming = match[filename_stream_index];
        }
    }
    Nom : Capture d’écran 2024-11-13 132858.png
Affichages : 36
Taille : 14,5 Ko

    Ok ou pas ??? Ça va ?

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

    Vous avez des classes qui deviennent des mastodontes qui font tout et n'importe quoi.
    Commencez par dégager tout ce qui est dépendant de la console dans des classes dédiées à l'affichage dans une console.
    console.h ===> class et struct ?

    Merci

  16. #956
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 258
    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 258
    Points : 12 471
    Points
    12 471
    Par défaut
    Ok ou pas ??? Ça va ?
    Ça dépend de votre expression régulière et de ce que vous voulez mettre dans "m_streaming".
    Utilisez "https://regex101.com" pour vérifier que vos index ("const int") soient bons pour votre usage.

    console.h ===> class et struct ?
    Je ne comprends pas votre question.

    Vous pouvez aussi bien faire des classes "AfficheurFilmDansConsole" que des fonctions libres "void AfficherFilmDansConsole(const Film& film)".
    Ou tout autre conception qui sépare l'affichage d'un objet métier du reste de l'objet.

  17. #957
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    692
    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 : 692
    Points : 0
    Points
    0
    Par défaut
    Ça dépend de votre expression régulière et de ce que vous voulez mettre dans "m_streaming".
    Utilisez "https://regex101.com" pour vérifier que vos index ("const int") soient bons pour votre usage.
    Ok ! Bon, tant pis

    https://regex101.com/r/AcrBQ3/1 !!!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    std::wstring SequenceVisionnage_film::Print_Dates_de_visionnage(std::vector<DateRecord>& m_DatesVisionnage, std::vector<std::wstring>& keyColor, std::wstring& valuesColor)
    {
    ...
        const std::wstring streaming_format = m_keyColor[1] + L" : " + m_valuesColor + L"%s";
    ...
        if (m_streaming != L"" && dates_de_visionnage_wstr.length() > 0)
             dates_de_visionnage_wstr += wstring_format(streaming_format, m_streaming.c_str());
        //
        return dates_de_visionnage_wstr;
    }
    Vous pouvez aussi bien faire des classes "AfficheurFilmDansConsole" que des fonctions libres "void AfficherFilmDansConsole(const Film& film)".
    Ou tout autre conception qui sépare l'affichage d'un objet métier du reste de l'objet.
    Plut tard !!!

    D'abord serie.cpp !!!


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

    Merci beaucoup

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

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

    Mais (serie.cpp) :
    Nom : Capture d’écran 2024-11-13 202543.png
Affichages : 30
Taille : 126,6 Ko
    Comment faire ???

    Exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    ...
    void Episode::ajouter_SequenceVisionnage(const InfosVisionnage& info_vis)
    {
        m_liste_sequence_visionnages.push_back(SequenceVisionnage(*this, info_vis));
    }
     
    void Episode::GetNumeroSequenceVisionnage(const SequenceVisionnage& sev_vis)
    {
        //...
        //auto NumeroSequenceVisionnage = m_episode.GetNumeroSequenceVisionnage(*this); // ??? #804
        //auto NumeroSequenceVisionnage = m_episode.GetNumeroSequenceVisionnage(sev_vis); // ??? #804
    }
    ...
    Merce d'avance

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

    struct Saison, class Serie : ok !

    Mais :
    struct InfosVisionnage
    struct SequenceVisionnage
    struct Episode
    Dure à dire !!!

    Et :
    Nom : Capture d’écran 2024-11-14 212445.png
Affichages : 25
Taille : 204,0 Ko
    === > https://www.allocine.fr/series/fiche...rie=12208.html

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    void Episode::Print()
    {
        bool first = true;
        for (auto vis : m_liste_sequence_visionnages)
        {
            if (first)
            {
                PrintFirstSequenceVisionnage(vis);
            }
            else
            {
                PrintSequenceVisionnage(vis);
            }
            first = false;
        }
    }
    
    void Episode::PrintFirstSequenceVisionnage(const SequenceVisionnage& vis)
    {
        // ???
    }
    void Episode::PrintSequenceVisionnage(const SequenceVisionnage& vis)
    {
        // ???
    
    }
    ???

    Merci

+ 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