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. #621
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Avril 2021
    Messages
    450
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 55
    Localisation : France, Marne (Champagne Ardenne)

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

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

    serie.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier)
    { // "{" : marche pas !!!
    ...
    ???


    serie.h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    struct Episode
    {
        const Saison& m_saison;
        Episode(InfosVisionnage const& info_vis) :m_saison{ info_vis.m_saison } {};
    ...
    ???

    Etc... etc... etc...

    Pourquoi ???

    Expliqué ?

    Je n'ai marre !!!

    Nom : Capture d’écran 2024-05-13 210258.png
Affichages : 113
Taille : 168,8 Ko

    Et test !!!
    Nom : Capture d’écran 2024-05-13 210136.png
Affichages : 108
Taille : 24,5 Ko
    ???

    Je suis crevé !!!
    Pourquoi ???

    ===> https://github.com/laurentbouleau/Exemple : Mai 09 (2024/05/13)

    Merci

  2. #622
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 108
    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 108
    Points : 12 192
    Points
    12 192
    Par défaut
    Pas de panique.

    Tous vos erreurs sont liées à peu de problème.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Episode(InfosVisionnage const& info_vis) :m_saison{ info_vis.m_saison } {};
    C'est parce que j'ai nommé le champ contenant la saison dans la classe "InfosVisionnage" "m_saison" et non "saison".
    Cela permet d'avoir un code bien plus clair. Vous allez voir après.

    Donc, dans serie.h :
    Remplacez :
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const Saison& m_saison;
    Ensuite, il faut changé le constructeur pour qu'il initialise correctement ce champ "référence constante" nommé "m_saison" :
    Donc, dans serie.cpp :
    Remplacez :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier)
    par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{saison}
    Avec ce petit ajout, le compilateur peut maintenant générer un constructeur qui initialise correctement le champ m_saison de la classe InfosVisionnage.

    Pourquoi ???

    Expliqué ?
    Bin, faut juste le bon nom pour le champ qu'on veut utiliser et quand on veut initialiser un champ "référence constante", il n'y a pas 36 manières de faire, c'est via une "liste d'initialisation" (le truc entre les ":" et l'accolade "{").

    Il faut encore quelques modifications pour que votre code compile (mais ne fonctionnera pas très bien, mais sera bien plus simple à corriger qu'avec vos anciens codes).

    donc remplacez dans serie.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_liste_sequence_visionnages.push_back(info_vis);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_liste_sequence_visionnages.push_back(SequenceVisionnage{ info_vis });
    C'est juste que m_liste_sequence_visionnages, c'est une liste de SequenceVisionnage et pas une liste de InfosVisionnage.
    On utilise le constructeur de SequenceVisionnage qui prend en paramètre une InfosVisionnage.
    Je pense qu'il faudra corriger/implémenter ce constructeur.
    Mais ce code qui l'utilise n'aura pas à être modifié après.

    remplacez (toujours dans serie.cpp) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taille = std::size(infosvisionnages);
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    taille = std::size(m_liste_episodes);
    Je ne comprends pas trop la logique de votre code, c'est quoi ce "infosvisionnages" qui sort de nullpart ?

    remplacez (toujours dans serie.cpp) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    infosvisionnages[i].Print();
    par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_liste_episodes[i]->Print();
    Toujours pareil, aucune logique avec infosvisionnages.
    On cherche à afficher chaque épisode, non ?
    Donc appeler la fonction "Print" de chaque épisode, non ?

    Voilà, ça compile.

    Faudra maintenant corriger le code, qui sera bien plus simple, vous verrez.

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 450
    Points : 0
    Points
    0
    Par défaut
    Merci

    Mais :
    Nom : Capture d’écran 2024-05-14 222107.png
Affichages : 87
Taille : 106,7 Ko

    Titre original.txt
    Stay Close
    Rien compris !!! Exception levée ???

    Merci vraiment

  4. #624
    Expert éminent sénior
    Avatar de Médinoc
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Septembre 2005
    Messages
    27 376
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2005
    Messages : 27 376
    Points : 41 545
    Points
    41 545
    Par défaut
    Il s'agit là d'une "exception" Windows, ici l'équivalent d'un SIGSEGV Linux.
    Le message associé implique que le code a tenté de lire ce qui était pointé par un pointeur nul.
    SVP, pas de questions techniques par MP. Surtout si je ne vous ai jamais parlé avant.

    "Aw, come on, who would be so stupid as to insert a cast to make an error go away without actually fixing the error?"
    Apparently everyone.
    -- Raymond Chen.
    Traduction obligatoire: "Oh, voyons, qui serait assez stupide pour mettre un cast pour faire disparaitre un message d'erreur sans vraiment corriger l'erreur?" - Apparemment, tout le monde. -- Raymond Chen.

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

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

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

    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
    const void initialiser_Titre_Original(fs::path const& m_cheminFichier, std::vector<std::wstring>& m_titre_original)
    { // Titre Original
        auto nomFichier = m_cheminFichier.wstring();
        assert(nomFichier.length() > 0 && L"Nom de fichier vide");
        std::vector<std::wstring> titre = lire_fichierTxt(m_cheminFichier.wstring(), { L"\r\n" });
        assert((titre.size() != 0));
        bool found = false;
        const std::wstring d_p = L" : ";
        size_t pos;
        pos = titre[0].find(d_p);
        if (!found && pos != std::wstring::npos)
        {
            m_titre_original[0] = titre[0].substr(0, pos);
            m_titre_original[1] = d_p;
            m_titre_original[2] = titre[0].substr(pos + 3);
            found = true;
        }
        const std::wstring d_p2 = L": ";
        pos = titre[0].find(d_p2);
        if (!found && pos != std::wstring::npos)
        {
            m_titre_original[0] = titre[0].substr(0, pos);
            m_titre_original[1] = d_p2;
            m_titre_original[2] = titre[0].substr(pos + 2);
            found = true;
        }
        const std::wstring d_p3 = L"/";
        pos = titre[0].find(d_p3);
        if (!found && pos != std::wstring::npos)
        {
            m_titre_original[0] = titre[0].substr(0, pos);
            m_titre_original[1] = d_p3;
            m_titre_original[2] = titre[0].substr(pos + 1);
            found = true;
        }
        const std::wstring d_p4 = L" - ";
        pos = titre[0].find(d_p4);
        if (!found && pos != std::wstring::npos)
        {
            m_titre_original[0] = titre[0].substr(0, pos);
            m_titre_original[1] = d_p4;
            m_titre_original[2] = titre[0].substr(pos + 3);
            found = true;
        }
        if (!found)
        {
            m_titre_original[0] = titre[0];
            found = true;
        }
    }
    Ok !

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 450
    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
    18
    19
    20
    21
    22
    23
    24
    25
    struct SequenceVisionnage
    {
        SequenceVisionnage(const Episode& episode) :m_episode{ episode } {};
        SequenceVisionnage(const SequenceVisionnage& sep) = default;
    
        void Print();
        std::wstring Print_Dates_de_visionnage(std::vector<DateRecord>& dr);
        bool Print_Titre_chiffre_et_point_ou_pas(unsigned short int episode);
    
        std::wstring m_min = L"min";
        std::vector<std::wstring>keyColor{ L"\x1b[94;1m", L"\x1b[38;2;0;255;0m" }; // keyColor[0] (bleu) et keyColor[1] (vert)
        std::wstring valuesColor = L"\x1b[38;2;255;255;255m"; // Blanc
    
        std::wstring m_streaming{ L"" };
        //bool m_fichier_pas_zero{ false };
        std::wstring m_titre;
        std::wstring m_deux_points;
        std::wstring m_sous_titre;
        long m_duree_en_seconde{ -1 };
        std::wstring m_phrases{ L"" };
        std::vector<DateRecord> m_DatesVisionnage{};
    
    private:
        const Episode& m_episode;
    };
    Comment fait ???

    Merci

  7. #627
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 108
    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 108
    Points : 12 192
    Points
    12 192
    Par défaut
    On commence à profiter des fruits de notre utilisation "maline" du C++ à la place du C.

    Comme l'indique @Médinoc, cette exception est un mécanisme qui interrompt le cour "naturel" du programme quand une situation "exceptionnelle" apparaît.

    Comme vous lancez votre programme via le débuggeur de Visual Studio, et que rien a été fait dans votre programme pour "gérer" cette situation, c'est le débuggeur qui prend la main et vous indique "où" la situation exceptionnelle est apparue.

    Ce mécanisme n'est pas spécifique au C++, mais le C++/STL l'utilise pour considérablement réduire le travail de mise au point d'un programme.

    Donc, grâce au fait qu'on utilise un "std::vector<std::wstring>&" en paramètre de la fonction, et pas un bête tableau C, vous êtes prévenu d'un dépassement de l'indice maximum du "tableau/vector" dès que vous essayez de lire ou d'écrire en dehors du tableau.

    Le débuggeur vous indique que le problème est ligne 319 du fichier "film_serie.cpp", dans la fonction initialiser_Titre_Original :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_titre_original[0] = titre;
    Remarque préliminaire, c'est pas très "lisible" de préfixer les paramètres d'un fonction par "m_".
    On devrait réserver ce préfixe "m_" pour les champs (Membres) d'une classe.
    Donc plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const void initialiser_Titre_Original(const fs::path const& m_cheminFichier, std::vector<std::wstring>& m_titre_original)
    Pour revenir à la ligne où est l'erreur détectée, c'est que vous cherchez à mettre dans la case "0" du vecteur "m_titre_original" une valeur, mais votre vecteur "m_titre_original" est vide.
    Vous ne devez pas affecter la valeur de la variable titre à la case "0" du vecteur "m_titre_original" mais AJOUTER une valeur à ce vecteur.

    "std::vector" est ce qu'on appelle un "tableau dynamique". Un tableau qui peut s'agrandir ou rétrécir en fonction des besoins.

    Et en utilisant les expression régulières et pas ces horribles "find" en cascade, on peut avoir un code bien plus clair, plus sûr, plus maintenable, ... :

    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 initialiser_Titre_Original(fs::path const& cheminFichier, std::vector<std::wstring>& titre_original)
    { // Titre Original
        auto nomFichier = cheminFichier.wstring();
        assert(nomFichier.length() > 0 && L"Nom de fichier vide");
        std::wstring titre = lire_fichierTxt(cheminFichier.wstring());
        assert((titre.size() != 0));
     
        wregex titre_pattern{ L"(.+?)(\\s:\\s|:\\s|/|\\s-\\s)(.+)" };
        std::wsmatch match;
        if (std::regex_match(titre, match, titre_pattern))
        {
            titre_original.push_back(match[1]);
            if (match.length() > 2)
            {
                titre_original.push_back(match[2]);
            }
            if (match.length() > 3)
            {
                titre_original.push_back(match[3]);
            }
        }
        else
        {
            titre_original.push_back(titre);
        }
    }
    P.S.: je ne vois pas trop l'intérêt de stocker le séparateur entre les titres.

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 450
    Points : 0
    Points
    0
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    void initialiser_Audiodescription(fs::path const& m_cheminFichier, std::wstring& m_ad)
    void initialiser_Avec(fs::path const& m_cheminFichier, std::vector<std::pair<std::wstring, std::wstring>>& m_avec)
    void initialiser_Genre(fs::path const& m_cheminFichier, std::vector<std::wstring>& m_genres_renvoyes, const std::vector<std::wstring>& genres_valides)
    void initialiser_Image(fs::path const& m_cheminFichier, std::vector<std::wstring>& m_images)
    void initialiser_Nationalite(fs::path const& m_cheminFichier, std::vector<std::wstring>& m_nationalites_renvoyes, const std::vector<std::wstring>& nationalites_valides)
    const void initialiser_Sous_Genre(std::wstring& m_s_g) // ???
    void initialiser_Titre_Original(fs::path const& m_cheminFichier, std::vector<std::wstring>& m_titre_original)
    Ok, mais ???

    https://github.com/laurentbouleau/Exemple : Mai 10 (2024/05/15)

    Exception levée à 0x00007FF74FCD9305 dans Exemple.exe*: 0xC0000005*: Violation d'accès lors de la lecture de l'emplacement 0x0000000000000018.
    ???

    Nom : Capture d’écran 2024-05-15 224723.png
Affichages : 74
Taille : 6,3 Ko

    Je suis crevé

  9. #629
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 108
    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 108
    Points : 12 192
    Points
    12 192
    Par défaut
    Ok, mais ???
    Je ne suis pas sûr de la question.

    Mais si c'est pour généraliser mes remarques sur la fonction "initialiser_Titre_Original" aux autres fonctions du même acabit.
    Oui, vous devriez vous débarrasser des "const" inutiles, ajouter les "const" où c'est nécessaire, et aussi utiliser correctement le préfixe "m_".

    Attention, dans votre version "Mai 10 (2024/05/15)", vous avez désactiver la génération des informations de débugging.
    Ca rend le travail de mise au point du programme bien plus complexe, totalement inutilement.

    Nom : developpez.png
Affichages : 66
Taille : 68,4 Ko

    J'ai l'impression que le message que vous obtenez, c'est parce que vous lancez directement le programme sans passer par le débuggeur de Visual Studio.

    Tant que votre programme n'est pas au point, passez toujours par le débuggueur.

    En corrigent le problème des informations de débugging et en lançant le programme via le débugueur, j'ai une erreur du même type que la précédente à la ligne 1448 de serie.cpp :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_titre[0] = titre[0].substr(0, pos);
    Vous verrez que c'est exactement le même problème que le précédent dans la fonction "initialiser_Titre_Original".

    Vous voyez l'un des principaux problèmes quand on code avec beaucoup de copier-coller : quand on corrige à un endroit, on ne le corrige pas aux autres.

    Donc, évitez comme la peste le copier-coller de code. Il n'y a que du mauvais code qui se copie-colle.

    Essayez de factoriser votre code pour ne pas avoir de copier-coller.

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 450
    Points : 0
    Points
    0
    Par défaut
    Nom : Capture d’écran 2024-05-16 202747.png
Affichages : 66
Taille : 8,7 Ko
    ???

    Merci

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 450
    Points : 0
    Points
    0
    Par défaut
    Google : options de ligne de commande '/zi' et '/gl' non compatibles
    14 sujets, mais rein

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 450
    Points : 0
    Points
    0
    Par défaut
    Pas de '/ZI' : ok !

    Merci

  13. #633
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 108
    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 108
    Points : 12 192
    Points
    12 192
    Par défaut
    Vous êtes en train de vous mélanger les pinceaux avec la configuration du projet.

    Ce que j'ai donné comme valeur : "Base de données du programme pour Modifier et Continuer (/ZI)" est ce qu'il y a de plus riche et puissant, et la valeur par défaut pour la configuration "Debug", que vous aviez "effacée".
    La configuration "courante" est indiquée en haut à gauche de la fenêtre :
    Nom : developpez1.png
Affichages : 61
Taille : 26,5 Ko

    Nom : developpez2.png
Affichages : 63
Taille : 24,4 Ko
    Dans la configuration "Debug", dans la section "Optimisation", la valeur de "optimisation de l'ensemble du programme" est par défaut "Non".
    C'est pour ça que "Base de données du programme pour Modifier et Continuer (ZI)" ne pose pas de problème en "Debug".

    Le message d'erreur montre que la valeur de "optimisation de l'ensemble du programme" est à "Oui (GL)", la valeur par défaut en configuration "Release", pas en "Debug" :
    Nom : developpez3.png
Affichages : 61
Taille : 24,4 Ko

    Donc, ne confondez pas ces 2 configurations.

    Je vous conseille donc d'avoir en Debug :
    "Base de données du programme pour Modifier et Continuer (/ZI)" en tant que "format des informations de débogage" + "Non" pour "optimisation de l'ensemble du programme"

    Et en Release :
    "Base de données du programme (/Zi)" en tant que "format des informations de débogage" + "Oui (GL)" pour "optimisation de l'ensemble du programme".

    Mais bon, vous ne devriez pas basculer en configuration "Release" avant d'avoir bien stabilisé votre code.

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 450
    Points : 0
    Points
    0
    Par défaut
    Ah oui !

    Merci

    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
            if (std::regex_match(nomFichier, std::wregex{ L"([[:digit:]]{1,2})x(.)+" }))
            {
                InfosVisionnage info_vis{ *this, m_cheminFichier};
                if (m_liste_episodes.find(info_vis.m_NumeroEpisode) != m_liste_episodes.end())
                {
    //                m_liste_episodes[info_vis.m_NumeroEpisode].ajouter_InfosVisionnage(info_vis);
    //                m_liste_episodes[info_vis.m_NumeroEpisode].ajouter_InfosVisionnage(*this,info_vis);
    //                m_liste_episodes[info_vis.m_NumeroEpisode].ajouter_InfosVisionnage(seq_vis);
                    ???
                }
                else
                {
                    //m_liste_episodes.emplace(std::pair<const int, Episode>{ info_vis.m_NumeroEpisode, creer_Episode(info_vis) });
                    //m_liste_episodes.emplace(std::pair<const int, Episode>{ info_vis.m_NumeroEpisode};// , creer_Episode(info_vis)});
                   ???
                }
                return;
            }
    Rien compris !!!

    Pas-à-pas !!!

    Merci

  15. #635
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 108
    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 108
    Points : 12 192
    Points
    12 192
    Par défaut
    Juste mettre en œuvre l'algorithme dont on a déjà parlé :

    Si le nom du fichier commence par 1 ou 2 chiffres puis un "x" [ligne 1]
    alors
    On crée un objet de type "InfosVisionnage", qui récupérera toutes les informations du fichier [ligne 3]
    Si le numéro d'épisode, que l'objet "info_vis" a récupéré, est un numéro d'épisode qu'on a déjà vu avant (via d'autres fichiers) [ligne 4]
    alors
    récupérer l'objet épisode avec ce numéro dans la map "m_liste_episodes" et appeler sa fonction "ajouter_SequenceVisionnage" pour ajouter la séquence de séances de visionnage que l'objet "info_vis" nous fournira [ligne 6]
    sinon
    créer une pair (numéro d'épisode, Episode) et ajouter cette paire dans la map "m_liste_episodes" (on utilise aussi l'objet "info_vis" comme source d'informations pour créer l'objet de type Episode) [ligne 10]


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
            if (std::regex_match(nomFichier, std::wregex{ L"([[:digit:]]{1,2})x(.)+" }))
            {
                InfosVisionnage info_vis{ *this, m_cheminFichier};
                if (m_liste_episodes.find(info_vis.m_NumeroEpisode) != m_liste_episodes.end())
                {
                    m_liste_episodes[info_vis.m_NumeroEpisode]->ajouter_SequenceVisionnage(info_vis);
                }
                else
                {
                    m_liste_episodes.emplace(std::pair<const int, shared_ptr<Episode>>{ info_vis.m_NumeroEpisode, make_shared<Episode>(info_vis) });
                }
                return;
            }

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

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

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

    ok ! Noté ! Je regard !

    Après, les fichiers flim.h et film.cpp : moi même, tous seuls !

    Merci

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

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

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Episode::ajouter_SequenceVisionnage(const InfosVisionnage& info_vis)
    {
        assert(info_vis.length() > 0 && L"???"); // Je comprends pas !!!
        m_liste_sequence_visionnages.push_back(SequenceVisionnage{ info_vis });
    }
    Etc...

    Merci

  18. #638
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 108
    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 108
    Points : 12 192
    Points
    12 192
    Par défaut
    // Je comprends pas !!!
    Moi non plus, pourquoi voulez-vous ajouter cette ligne ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SequenceVisionnage{ info_vis }
    C'est ici qu'il faut faire attention, on veut créer un objet "SequenceVisionnage" à partir d'un objet "InfosVisionnage".
    Vérifiez et complétez le constructeur correspondant pour que tous les champs de l'objet "SequenceVisionnage" soient initialisé à partir des champs de l'objet "InfosVisionnage" passé en paramètre du constructeur.

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

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

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

    serie.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Episode::ajouter_SequenceVisionnage(const InfosVisionnage& info_vis)
    {
        m_liste_sequence_visionnages.push_back(SequenceVisionnage{ info_vis });
    }
    ???

    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
    struct Episode
    {
        const Saison& m_saison;
        Episode(InfosVisionnage const& info_vis) :m_saison{ info_vis.m_saison } {};
    
        void ajouter_SequenceVisionnage(const InfosVisionnage& info_vis);
    
        void Print();
        std::vector<SequenceVisionnage> m_liste_sequence_visionnages{};
    
        int m_numero{ -1 };
        long m_duree{ -1 };
        std::wstring m_phrases{ L"" };
    };
    Comment faire ?

    xutility :
    Nom : Capture d’écran 2024-05-20 230901.png
Affichages : 31
Taille : 56,5 Ko

    Excuse-moi !
    Merci

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

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

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

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

Discussions similaires

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

Partager

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