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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    C'est chiant que la version Git que vous donnez n'utilise pas le code qui vous pose problème.
    On n'est toujours obligé de modifier au pif votre "Exemple.cpp" pour passer dans le code que vous indiquez.
     
    Si vous avez la flemme, pourquoi ne pas mettre tous les cas de tests dans un std::vector ???
    Ben, non !!!

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

    Je suis fatigué !!!

    Merci

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 236
    Points : 12 421
    Points
    12 421
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        const void Print_Acteurs_de_doublage_Voix_locales();
         const void Print_Acteurs_de_doublage_Voix_originales();
         const void Print_Avec(bool affichage_actif, std::vector<std::pair<std::wstring, std::wstring>> avec, const std::wstring str);
    VIREZ MOI CES PUTAIN DE CONST DEVANT DES VOID, SVP !!!
    Pourquoi garder la déclaration de la fonction "Film:: Print_Acteurs_de_doublage_Voix_originales" et ajouter la déclaration de "Film:: Print_Acteurs_de_doublage_Voix_locales" ???
    Seule la fonction "Film:: Print_Avec" est utilisée, et semble faire correctement le travail, non ?

  3. #983
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    669
    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 : 669
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Novembre 30 (26/11/2024)
    Ok ou pas ?

    Parfois :
    serveur email developpez.net bacelar -/-> laurent.b.51100@gmail.com
    ou
    forum web developpez.net bacelar -/-> laurent.b.51100@gmail.com
    ???

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 236
    Points : 12 421
    Points
    12 421
    Par défaut
    Ok, mais dégagez ces "const void" !!!

  5. #985
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    669
    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 : 669
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Novembre 31 (26/11/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
    void Episode::PrintFirstSequenceVisionnage(const SequenceVisionnage& vis)
    {
        auto& liste = m_liste_sequence_visionnages[0];
     
        bool isFirstSequence = true;
        liste.Print(isFirstSequence);
    }
     
    void Episode::PrintSequenceVisionnage(const SequenceVisionnage& vis)
    {
        for (auto& liste : m_liste_sequence_visionnages)
        {
            auto& l = liste;
            l.Print(false);
        }
    }
    Voilà !!!

    Je suis crevé !!!!

  6. #986
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    669
    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 : 669
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Novembre 32 (27/11/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
    void Episode::PrintSequenceVisionnage(const SequenceVisionnage& vis)
    {
        /*for (auto& liste : m_liste_sequence_visionnages)
        {
            auto& l = liste;
    
            l.Print(false);
    
        }*/
        auto& liste = m_liste_sequence_visionnages[1];
    
        bool isFirstSequence = false;
    
        liste.Print(isFirstSequence);
    }
    Comment faire ?

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    void Episode::PrintSequenceVisionnage(const SequenceVisionnage& vis)
    {
        auto liste = m_liste_sequence_visionnages;
        size_t i = liste.size();
        if (i != 0)
        {
            for (auto l : liste)
            {
                l.Print(false);
     
                if (i == 0)
                    break;
                liste.erase(liste.begin());
     
                size_t i = liste.size();
            }
        }
    }
    Nom : Capture d’écran 2024-11-28 001511.png
Affichages : 43
Taille : 16,1 Ko

    ???

    Merci

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 236
    Points : 12 421
    Points
    12 421
    Par défaut
    Vous n'êtes pas assez rigoureux avec le nommage et cela complexifie énormément la moindre action.

    Exemple :
    "bool Print_Titre_chiffre_et_point_ou_pas(long episode)" devient "long Print_Titre_chiffre_et_point_ou_pas(long episode)"
    Sauf que le "_ou_pas", c'est "logique" pour un booléen, pas pour un long.
    (Déjà, un "Print" qui renvoie un truc, c'est chelou.)
    On n'a pas forcement la finalité des choses avec vos noms, mais quand ça devient complètement incohérent, c'est encore pire.
    Il ne faut pas hésiter à renommer les choses pour que leur nom corresponde à leur utilité supposée.

    Idem pour le champ "numero_sequence" de la classe SequenceVisionnage, c'est sensé numéroter quoi ???
    Une SequenceVisionnage n'a pas intrinsèquement de "numéro".
    Elle est peut-être ordonnée chronologiquement par rapport à un épisode, par rapport à l'ensemble d'une saison, par rapport à la série entière.
    Peut-être que le "numérotage" n'a rien de chronologique.
    Cela n'a rien de propre/intrinsèque à une SequenceVisionnage, alors pourquoi en faire un champ de la classe SequenceVisionnage ???
    Si vous avez besoin que l'affichage d'une SequenceVisionnage écrive un "numéro", passez ce numéro en paramètre de cette fonction. (Je ne reviens pas sur le fait que l'affichage du contenu d'une classe métier n'a pas à être implémenter dans la classe elle-même).

    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
    void Episode::PrintFirstSequenceVisionnage(const SequenceVisionnage& vis)
    {
        auto& liste = m_liste_sequence_visionnages[0];
     
        bool isFirstSequence = true;
        liste.Print(isFirstSequence);
    }
     
    void Episode::PrintSequenceVisionnage(const SequenceVisionnage& vis)
    {
        for (auto& liste : m_liste_sequence_visionnages)
        {
            auto& l = liste;
            l.Print(false);
        }
    }
    Ce que vous donnez comme code dans votre post est truffé d'incohérence de Design.
    La fonction "Episode:: PrintFirstSequenceVisionnage" a comme paramètre une "SequenceVisionnage", alors pourquoi en chercher une autre : "auto& liste = m_liste_sequence_visionnages[0];" ???
    Idem pour la fonction "Episode:: PrintSequenceVisionnage".
    Soit ces fonctions sont autonomes vis à vis d'une "SequenceVisionnage" particulière, et donc ne devraient pas avoir un paramètre "const SequenceVisionnage& vis".
    Soit elles dépendent d'une "SequenceVisionnage" particulière, elles ne devraient pas "dénicher" aléatoirement d'autres "SequenceVisionnage", mais uniquement utiliser la valeur du paramètre de ces fonctions.

    On n'oubliera pas le nom de la variable "liste" qui n'est JAMAIS une liste mais TOUJOURS un élément d'une liste. PITIE, FAITES UN PEU D'EFFORT, SVP.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    auto& sequence = m_liste_sequence_visionnages[0];
    Donc
    - choix 1 (ces fonctions sont autonomes) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    void Episode::PrintFirstSequenceVisionnage()
    {
        if(m_liste_sequence_visionnages.size()>0)
            m_liste_sequence_visionnages[0].Print(true);
    }
     
    void Episode::PrintToutesLesSequenceVisionnage()
    {
        bool first = true;
        for (const auto& sequence : m_liste_sequence_visionnages)
        {
            sequence.Print(first);
            first = false;
        }
    }
    Dans ce cas, j'ai du mal à comprendre l'utilité de la fonction "PrintFirstSequenceVisionnage".

    - choix 2 (elles dépendent d'une "SequenceVisionnage" particulière) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Episode::PrintFirstSequenceVisionnage(const SequenceVisionnage& vis)
    {
        vis.Print(true);
    }
     
    void Episode::PrintSequenceVisionnage(const SequenceVisionnage& vis)
    {
        vis.Print(false);
    }
    Dans ce cas, j'ai du mal à comprendre leur "utilité" car un code comme celui qui suit permet de faire pareil, mais sans cette complexité :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Episode::Print()
    {
        bool first = true;
        for (const auto& sequence : m_liste_sequence_visionnages)
        {
            sequence.Print(first);
            first = false;
        }
    }
    Et si on reprend la problématique du champ "numero_sequence" et que la numérotation est par épisode et chronologique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Episode::Print()
    {
        bool first = true;
        int numero_sequence = 1;
        for (const auto& sequence : m_liste_sequence_visionnages_ordonnee_chronologiquement)
        {
            sequence.Print(numero_sequence);
            first = false;
            numero_sequence++;
        }
    }
    Attention au passage de "m_liste_sequence_visionnages" => "m_liste_sequence_visionnages_ordonnee_chronologiquement" car le tri chronologique doit être assuré par l'objet Episode.
    Et aussi le changement de signature de la fonction "SequenceVisionnage:: Print" qui ne prend plus un booléen en paramètre mais son numéro de séquence.

    Pourquoi toutes ces lourdeurs d'écriture ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        bool isFirstSequence = true;
        liste.Print(isFirstSequence);
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    for (auto& liste : m_liste_sequence_visionnages)
        {
            auto& l = liste;
            l.Print(false);
        }
    =>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for (const auto& sequence : m_liste_sequence_visionnages)
        {
            sequence.Print(false);
        }
    Et ces remarques couvrent TOUTES les modifications de la version "Novembre 31 (26/11/2024)" sous Github. Essayez de ne pas systématiquement tenter de vous tirer une balle dans le pied, SVP.

    https://github.com/laurentbouleau/Exemple : Novembre 32 (27/11/2024)
    ...
    Comment faire ?
    Comment faire quoi ?
    Tant que vous ne nommez pas correctement variables et fonctions, on ne comprendra pas l'usage de ces codes et sans demande explicites, c'est plus de la devinette qu'autre chose.
    J'ai déjà fourni des exemples et alternatives au code que vous avez posté qui sont plus simples et "fonctionnels", plus haut dans cette réponse.

    https://github.com/laurentbouleau/Exemple : Novembre 33 (28/11/2024)
    Pas de solution !!!
    Solution à quel problème ?!?!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    liste.erase(liste.begin());
    Pourquoi l'affichage d'une séquences de visionnage doit supprimer la première de la liste des séquences de visionnage d'un épisode ????

    Pourquoi faire un code aussi complexe pour pas grand-chose, au final ???


    L'erreur indique que vous voulez cloner une "SequenceVisionnage" et que vous n'avez pas/plus la possibilité de le faire.
    En appelant la méthode "erase" d'un std::vector, cette méthode doit être capable de cloner les éléments qui suivent l'élément à supprimer, pour garder les éléments du vecteur les uns derrière les autres.
    Vous n'avez plus cette possibilité de clonage d'un "SequenceVisionnage", et c'est tant mieux.
    - Il ne faut jamais modifier le contenu d'un conteneur (liste, vecteur, etc...) pendant qu'on le parcours (via un "for( ... : conteneur)" par exemple).
    - Sémantiquement, vous ne devez pas cloner ces "SequenceVisionnage". Une fois que l'analyse des fichiers a été faites, vos "SequenceVisionnage" ont été créés une fois correctement et c'est tout.

    Pourquoi un code comme celui qui suit ne convient pas ??? :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    void Episode::Print()
    {
        bool first = true;
        for (const auto& sequence : m_liste_sequence_visionnages)
        {
            sequence.Print(first);
            first = false;
        }
    }

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Episode::Print()
    {
        bool first = true;
        int numero_sequence = 1;
        for (const auto& sequence : m_liste_sequence_visionnages_ordonnee_chronologiquement)
        {
            sequence.Print(numero_sequence);
            first = false;
            numero_sequence++;
        }
    }
    J'en ai marre !!!

    Nom : Capture d’écran 2024-11-28 225325.png
Affichages : 32
Taille : 21,2 Ko

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Episode::Print()
    {
        bool first = true;
        int numero_sequence = 1;
        for (/*const*/ auto& sequence : m_liste_sequence_visionnages_ordonnee_chronologiquement)
        {
            sequence.Print(numero_sequence);
            first = false;
            numero_sequence++;
        }
    }
    Ok ou pas ?

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 236
    Points : 12 421
    Points
    12 421
    Par défaut
    C'est l'inverse qu'il faut faire.
    C'est l'aspect "contaminant" de la const-correctness qui joue ici.

    Comme vous n'avez pas gérer la "const-correctness" des fonctions depuis le début, vous vous prenez un petit retour de bâton.
    Mais c'est pas bien méchant.

    Il faut que vous compreniez le concept de "const" du C++ pour aller plus loin.

    "const" pour constant.
    On "tague" des variables avec "const" quand on sait que la variable ne doit pas changée après son initialisation.
    On "tague" des paramètres d'une fonction avec "const" quand on "sait/veut" que l'argument passé en paramètre ne change pas pendant l'exécution de la fonction.
    On "tague" des fonctions avec "const" (et c'est à la fin de la signature pas au début, SVP ) quand la fonction d'une classe s'engage à ne pas changer la valeur des champs de l'objet "courant" (cela ne s'applique donc pas aux fonctions statiques ou libres).
    Cela permet aux compilateurs de faire des optimisations, mais pas que.
    Cela permet aussi d'avoir des modes de traitements des données spécialisés et des analyses/conceptions "sécurisées".

    J'ai mis le "const" dans "for (const auto& sequence : m_liste_sequence_visionnages_ordonnee_chronologiquement)" car je veux n'appeler que des fonctions qui s'engagent à ne pas modifier les champs de la séquence.
    Ca coince parce que la fonction "SequenceVisionnage:: Print" ne s'est pas engagé à ne pas modifier la séquence.
    On n'est d'accord que c'est pas logique que la fonction "SequenceVisionnage:: Print" modifie les champs de la séquence, non ?
    Donc, ce n'est pas un "const" qu'il faut supprimer mais un const qu'il ajouter à la déclaration et à la définition de la fonction "SequenceVisionnage:: Print".
    C'est Ok pour vous ?

    Mais logiquement une fonction "const" ne peut utiliser que d'autres fonctions "const" sur l'objet.
    Donc, il faudra propager le "const" à toutes les fonctions appelées par "SequenceVisionnage:: Print", et qui doivent logiquement ne pas modifier les champs de l'objet.

    Quand cela compilera à nouveau, vous pourrez ajouter "const" à la fonction "Episode:: Print", car, elle aussi, devrait s'engager à ne pas modifier les champs de l'épisode.

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

    SequenceVisionnage : ok !
    Mais : InfosVisionnage avec const ???

    Et : bool SequenceVisionnage:: Print_Titre_chiffre_et_point_ou_pas(long episode) ===> int SequenceVisionnage:: Print_???

    Merci

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 236
    Points : 12 421
    Points
    12 421
    Par défaut
    Mais : InfosVisionnage avec const ???
    C'est pas au niveau de la classe que "const" à un sens, c'est au niveau de ses fonctions.
    Et oui, il y a très vraisemblablement des fonctions qui ont une sémantique de "constance" sur l'objet, comme une "Print_bidule".
    A bin non, la classe "InfosVisionnage" n'a qu'une fonction "utile", c'est son constructeur, qui, par définition, ne peut pas être "const".
    Mais il faudra se poser la question à chaque ajout d'une nouvelle fonction à cette classe.

    Et : bool SequenceVisionnage:: Print_Titre_chiffre_et_point_ou_pas(long episode) ===> int SequenceVisionnage:: Print_???
    Je comprends toujours pas l'utilité de ce machin mais "logiquement", elle est "const" (vu que c'est une fonction "Print") :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    bool SequenceVisionnage:: Print_Titre_chiffre_et_point_ou_pas(long episode) const
    P.S: Pourquoi "SequenceVisionnage:: Print_Titre_chiffre_et_point_ou_pas" devrait changer de type de retour ???
    Un changement de sémantique ? => Changement/Correction du nom de la fonction.

  14. #994
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    669
    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 : 669
    Points : 0
    Points
    0
    Par défaut
    Ben non : Pas class, mais les fonctions !!!

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

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

    Compliqué à dire !!!

    Pouvez-vous expliquer ? Par exemple : std::wstring SequenceVisionnage:: Print_Dates_de_visionnage(int numero_sequence, std::vector<DateRecord> m_DatesVisionnage) const ???

    Merci

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 236
    Points : 12 421
    Points
    12 421
    Par défaut
    Pouvez-vous expliquer ? Par exemple : std::wstring SequenceVisionnage:: Print_Dates_de_visionnage(int numero_sequence, std::vector<DateRecord> m_DatesVisionnage) const ???
    Expliquer quoi, SVP ???
    Arrêtez de mettre des préfixe "m_" aux paramètre des vos fonction, SVP !!!

    Dans serie.h, c'est quoi ces parenthèses !?! :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::wstring(Print_Dates_de_visionnage)(int numero_sequence, std::vector<DateRecord>dr) const;
    Vous avez de la chance que ça compile encore.
    Vous devez savoir pourquoi cela compile malgré ces conneries.
    Mais arrêtez de jouer avec le feu, SVP !!!

    Et encore une fois, votre code n'utilise pas le bout de code support de votre question.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
            if (racine == L"Azertyuiop £££.[2024].Mini-série")
            //if(racine == L"Star Wars - Episode VII - Le réveil de la force.(2015-12-16)")
                ;
            else
                continue;
    Si on n'a mis tous les cas dans la variable "racines", c'est pas pour n'en prendre qu'un, qui correspond même pas à votre question.
    Si vous voulez que cela aille directement dans le cas qui nous intéresse, changer l'ordre dans "racines" et pas cet infame bricolage.
    Donc, virez-moi ces lignes à la con.

    Pour revenir à la fonction "SequenceVisionnage:: Print_Dates_de_visionnage", pourquoi passer en paramètre "numero_sequence", vu que cela ne sert à rien dans le corps de la fonction ???
    Et passer en argument de la fonction un champ de la classe est en général une mauvaise idée car, normalement, la fonction a "naturellement" accès aux champs de la classe.
    donc, la signature de la fonction serait plus :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::wstring SequenceVisionnage::Print_Dates_de_visionnage() const
    (Encore que "Printxxx" pour une fonction qui n'affiche rien mais qui "calcule" une chaine de caractères, c'est pas top, "calculXXX" serait plus judicieux.
    Si le code de la fonction "SequenceVisionnage:: Print_Dates_de_visionnage" vous semble complexe, à moi aussi, mais ce n'est que la retranscription en C++ du VOTRE code C.
    Comme votre code initial est très peu explicite (cf. l'usage de nom cryptique), que vous ne donnez aucune explication de la logique voulu de votre code, nous ne pouvons pas simplifier ce code à votre place.
    la signification précise de "pas-à-pas", de "(1)", de "stop ou pas !" ou encore de "à suivre" nous est toujours pas expliquée de votre part.

    L'affichage est toujours un peu foireux parce que vous initialisez mal les champs de vos objets.
    A chaque anomalie, vous devriez facilement trouver le code qui décorne.

  17. #997
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    669
    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 : 669
    Points : 0
    Points
    0
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Expliquer quoi, SVP ???
    Arrêtez de mettre des préfixe "m_" aux paramètre des vos fonction, SVP !!!
    Ok !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Dans serie.h, c'est quoi ces parenthèses !?! :
    ...
    Vous avez de la chance que ça compile encore.
    Vous devez savoir pourquoi cela compile malgré ces conneries.
    Mais arrêtez de jouer avec le feu, SVP !!!
    Ok !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Si on n'a mis tous les cas dans la variable "racines", c'est pas pour n'en prendre qu'un, qui correspond même pas à votre question.
    Si vous voulez que cela aille directement dans le cas qui nous intéresse, changer l'ordre dans "racines" et pas cet infame bricolage.
    Donc, virez-moi ces lignes à la con.
    Ok !

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

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 236
    Points : 12 421
    Points
    12 421
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    std::wcout << L"racines=[" << racines[1] << L']' << std::endl;
    std::wstring& racine = racines[1];
    fs::path r = t + racine;
    Pourquoi ce 1 ???
    Pourquoi ne pas laissez la boucle sur "racines" ???
    Juste changer l'ordre dans l'initialisation de la variable "racines" pour que le premier corresponde au problème actuellement bloquant.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::wstring SequenceVisionnage::Print_Dates_de_visionnage(std::vector<DateRecord> m_DatesVisionnage) const
    Pourquoi avoir supprimer "int numero_sequence" et pas "std::vector<DateRecord> m_DatesVisionnage" ???
    Ou au moins l'avoir renommé, comme dans le .h ???

  19. #999
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    669
    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 : 669
    Points : 0
    Points
    0
    Par défaut
    Pourquoi ce 1 ???
    Pourquoi ne pas laissez la boucle sur "racines" ???
    Juste changer l'ordre dans l'initialisation de la variable "racines" pour que le premier corresponde au problème actuellement bloquant.
    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
        const std::vector<std::wstring> racines{
                                            L"Azertyuiop - qsdfghjklm.[2021-2023 Netflix].Manga",
                                            L"Azertyuiop £££.[2024].Mini-série",
    
                                            L"Kaleidoscope.[2023 Netflix]",
                                            L"Seven Deadly Sins- Four Knights of the Apocalypse.[2023].Manga",
                                            L"Dr. STONE.[2019-2022 Crunchyroll].Manga",
                                            L"Andor.[2022- Disney+]",
                                            L"Star Wars Rebels.[2014-2017 Disney+].Animation",
                                            L"Star Wars- The Clone wars.[2008-2020 Disney+].Animation",
                                            L"Shogun.[2024- Disney+]",
    
                                            L"Avatar 2 - la voie de l'eau.(2022-12-14)",
                                            L"Kingsglaive- Final Fantasy XV.(2016-08-30 VOD).Animation",
                                            L"Prey.(2022-08-05 Disney+)",
                                            L"Sous la Seine.(2024-06-05 Netflix)",
                                            L"Star Wars - Episode VII - Le réveil de la force.(2015-12-16)",
                                            L"Star Wars- The Clone Wars.(2008-08-27).Animation"
        };
        for (auto& racine : racines)
        {
            if (racine == racines[1]) // <=== 1
            {
                std::wcout << L"racine=[" << racine << L']' << std::endl;
                fs::path r = t + racine;
                auto nomDossier = r.filename().wstring();
                assert(nomDossier.length() > 0 && L"Nom de dossier vide");
    
                bool found = false;
    
    ...
            }
        }
    Ok ou pas ?

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

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

    Pourquoi avoir supprimer "int numero_sequence" et pas "std::vector<DateRecord> m_DatesVisionnage" ???
    Ou au moins l'avoir renommé, comme dans le .h ???
    Ok ou pas ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    std::wstring SequenceVisionnage::Print_Dates_de_visionnage(int numero_sequence, const std::vector<DateRecord> m_DatesVisionnage) const
    {
        const std::wstring date_format = L"%d" + m_keyColor[1] + L"/" + m_valuesColor + L"%m" + m_keyColor[1] + L"/" + m_valuesColor + L"%Y";
        const std::wstring between_parenthesis = m_keyColor[1] + L"(" + m_valuesColor + L"%s" + m_keyColor[1] + L")" + m_valuesColor;
        const std::wstring same_date_format = between_parenthesis;
        const std::wstring prequel_format = between_parenthesis;
        const std::wstring streaming_format = m_keyColor[1] + L" : " + m_valuesColor + L"%s";
        const std::wstring step_by_step_tag = L' ' + m_keyColor[1] + L'[' + m_valuesColor + L"pas-à-pas" + m_keyColor[1] + L']' + m_valuesColor;
     
        std::wstring dates_de_visionnage_wstr = L"";
     
        std::vector<std::wstring> v_wstr;
        std::time_t last_date{ 0 };
        int same_date_counter = 0;
        for (auto dr : m_DatesVisionnage)
        {
            std::time_t time = std::mktime(&dr.date);
     
            if (last_date != time)
            {
                std::tm localtime = *std::localtime(&time);
                std::wstringstream target_stream;
                target_stream << std::put_time(&localtime, date_format.c_str());
                std::wstring date_str = target_stream.str();
                v_wstr.push_back(date_str);
                same_date_counter = 0;
            }
            else
            {
                same_date_counter++;
                if (same_date_counter == 1)
                {
                    v_wstr.back() += wstring_format(same_date_format, L"1");
                }
                v_wstr.back() += wstring_format(same_date_format, std::to_wstring(same_date_counter + 1).c_str());
            }
            last_date = time;
        }
     
        for (auto i = 0; i < v_wstr.size(); i++)
        {
            if (i != 0)
                dates_de_visionnage_wstr += L", ";
            dates_de_visionnage_wstr += v_wstr[i];
        }
     
        if (m_DatesVisionnage.size() == 1)
        {
            if (m_DatesVisionnage[0].someFlag)
                dates_de_visionnage_wstr += wstring_format(prequel_format, L"stop ou pas !");
        }
        else
        {
            if (m_DatesVisionnage.size() > 0)
            {
                if (m_DatesVisionnage.back().someFlag)
                {
                    dates_de_visionnage_wstr += wstring_format(prequel_format, L"à suivre");
                }
                dates_de_visionnage_wstr += step_by_step_tag;
            }
        }
     
        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;
    }
    ???

    Nom : Capture d’écran 2024-12-01 225358.png
Affichages : 5
Taille : 24,3 Ko

    Mon chaton : Je suis crevé !!!

+ 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