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

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

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

    Je suis fatigué ! Le chat...

    serie.h :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    struct InfosVisionnage
    {
    ...
    // Ok !
    ...
    };
    
    struct SequenceVisionnage
    {
        struct Saison;
        SequenceVisionnage(std::filesystem::path const& m_cheminFichier);
    // ???
    // ajouter et/ou
    // creer et/ou
    // Vector et/ou
    // etc...
    // 
    ...
    };
    
    struct Episode
    {
        //Episode(std::filesystem::path const& cheminFichier);
    //    Episode(SequenceVisionnage const& seq_vis);
        struct Saison;
    
        void ajouter_InfosVisionnage(InfosVisionnage const& seq_vis);
        void creer_Episode(InfosVisionnage const& seq_vis);
    
        void Print();
        //::vector<InfosVisionnage> info_vis;
        //std::vector<SequenceVisionnage> sequencevisionnages;
        std::vector<SequenceVisionnage> m_liste_visionnages{ 0 };
       // ???
    };
    // Etc...
    Merci beaucoup

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

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

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

  3. #603
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 086
    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 086
    Points : 12 153
    Points
    12 153
    Par défaut
    Attention, la version "Avril 07 (2024/04/25)" de vos sources ne compile pas.

    GitHub\Exemple\serie.cpp(1031,13): error C2039: 'Print' n'est pas membre de 'SequenceVisionnage'
    C'est parce que vous avez mal "fermé" un commentaire multilignes.

    Ligne 675 et 676 :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    //    system("PAUSE");
    }*/
    Le "*/" devrait être avant l'accolade fermante pour que le code soit "équilibré".

    Après cette correction, le nombre d'erreurs chute.

    Première restante :
    GitHub\Exemple\serie.cpp(1030,13): error C2039: 'Print' n'est pas membre de 'SequenceVisionnage'
    Le code correspondant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    void Episode::Print()
    {
        std::wcout << L"www" << std::endl;
        system("PAUSE");
    
    //    PrintData();
        for (auto vis : m_liste_visionnages)
        {
            vis.Print();
        }
    }
    L'erreur indiquée est la ligne en rouge.
    Mais on peut voir des cochonneries en vert.
    J'ai déjà mainte fois indiqué de ne pas utiliser "std::wcout" pour le débogage, et c'est tout aussi con d'utiliser "system("PAUSE")", UTILISEZ LES POINTS D'ARRET DU DEBUGGUEUR !!!

    Ligne 1027, l'appel à la fonction "PrintData" est commenté, Pourquoi ?

    En la commentant, vous vous interdisez d'afficher des informations de l'épisode avant d'afficher les informations sur chaque séance de visionnage.
    Même si "PrintData" ne fait rien, déclarez cette fonction et implémenter là avec un corps de fonction vide.

    La ligne 1030 est en erreur car vous avez mis en commentaire la fonction "" dans le .h (ligne 102) :
    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
    struct SequenceVisionnage
    {
        struct Saison;
        SequenceVisionnage(std::filesystem::path const& m_cheminFichier);
        //void initialiser_duree(std::wstring& m);
        //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::filesystem::path m_cheminFichier;
    
        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
    
        //unsigned short int m_saison{};
        //unsigned short int m_episode{};
        //std::vector<DateRecord> m_dates{ 0 };
        //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;
        //unsigned short int m_numero{ 1 };
        //long m_duree_en_seconde{ -1 };
        //std::wstring m_phrases{ L"" };
    
    
        std::vector<InfosVisionnage>m_liste_visionnages;
    };
    Décommentez cette ligne. Vous aurez peut-être des erreurs d'édition de lien après mais il faut que vos structures/classes soient "logiques".
    Vous avez gardé le constructeur "SequenceVisionnage(std::filesystem::path const& m_cheminFichier);" alors qu'il n'a plus aucun sens mais vous mettez en commentaire la fonction "Print"?

    Revoyez à tête reposée vos structures/classes pour faire en sorte qu'elles soient cohérentes avec elles-mêmes. Ne regardez l'implémentation de ceux-ci qu'après.

    Il y a de grandes chances que "void InfosVisionnage:rint()" devienne "void SequenceVisionnage:rint()".

    Après la suppression de cette mise en commentaire intenpestif, la première erreur de compilation devient :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    GitHub\Exemple\serie.cpp(1323,60): error C2039: 'ajouter_InfosVisionnage' n'est pas membre de 'Episode'
    Bin, faut juste ajouter une fonction "ajouter_InfosVisionnage" à la classe Episode. Aussi bien la déclaration dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    struct Episode
    {
        struct Saison;
        Episode(std::filesystem::path const& cheminFichier);
        Episode(SequenceVisionnage const& seq_vis);
    
        //void ajouter_InfosVisionnage(InfosVisionnage const& seq_vis);
        void creer_Episode(InfosVisionnage const& seq_vis);
    
        void Print();
        //::vector<InfosVisionnage> info_vis;
        //std::vector<SequenceVisionnage> sequencevisionnages;
        std::vector<SequenceVisionnage> m_liste_visionnages{ 0 };
        void ajouter_InfosVisionnage(const InfosVisionnage&info_vis);
    };
    que la définition dans le .cpp:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    void Episode::ajouter_InfosVisionnage(const InfosVisionnage& info_vis)
    {}
    Après ces 2 ajouts, la première erreur de compilation devient :
    GitHub\Exemple\serie.cpp(1328,62): error C2664: 'void Saison::creer_Episode(const SequenceVisionnage &)'*: impossible de convertir l'argument 1 de 'InfosVisionnage' en 'const SequenceVisionnage &'
    Encore un message d'erreur "simple".
    La fonction "Saison::creer_Episode" ne devrait pas prendre une "SequenceVisionnage" en paramètre mais une "InfosVisionnage".

    Après cette correction (dans le .h et dans le .cpp), le premier et dernier message d'erreur à la compilation est :
    GitHub\Exemple\serie.cpp(1327,58): error C2679: '=' binaire*: aucun opérateur trouvé qui accepte un opérande de partie droite de type 'void' (ou il n'existe pas de conversion acceptable)
    Qui correspond à la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_liste_episodes[info_vis.m_NumeroEpisode] = creer_Episode(info_vis);
    Comme m_liste_episodes est une "std::map<int, Episode>", ce n'est pas comme ça qu'on ajoute une entré dans ce dictionnaire, mais plutôt :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_liste_episodes.emplace(std::pair<const int, Episode>{ info_vis.m_NumeroEpisode,creer_Episode(info_vis) });
    Mais pour que cela fonctionne, il faut que la fonction "Saison::creer_Episode" retourne un Episode et non "void".

    Et ainsi de suite, jusqu'à ce que cela compile, il restera à implémenter "réellement" (avec un corps non vide) les fonctions ajoutées et modifiées celles dont la signature a évoluée.
    Mais chacun de ces fonctions devrait être très simple à implémenter.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    struct SequenceVisionnage
    {
        struct Saison;
        SequenceVisionnage(std::filesystem::path const& m_cheminFichier);
    // ???
    // ajouter et/ou
    // creer et/ou
    // Vector et/ou
    // etc...
    // 
    ...
    };
    Vous ne devriez avoir dans la classe "SequenceVisionnage" que ce qui est lié à une séquence de séance de visionnage.
    Donc changer le constructeur pour qui prennent en entré une "InfosVisionnage" et pas un "std::filesystem::path".
    C'est la classe "InfosVisionnage" qui décortique le nom et le contenu du fichier.

    Actuellement, c'est un peu la jungle entre vos types.
    Faites simple :
    A la fin, on doit avoir une organisation des objets simple :
    Une série contient des saisons, une saison contient des épisodes, et un épisode contient des séquences de séances de visionnage, une séquence de séances de visionnage contient des séances de visionnage.
    "m_liste_episodes" est le champ d'un objet Saison contenant la liste des épisodes de la saison.
    "m_liste_visionnages" est le champ d'un objet Episode contenant la liste des séquences de séance de visionnage de l'épisode. on pourrait le nommer "m_liste_sequence_visionnage" pour être plus précis.
    Par exemple "SequenceVisionnage" n'a pas à avoir un champ "std::vector<InfosVisionnage>", ni faire une "forward déclaration" de structure

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

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

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

    https://github.com/laurentbouleau/Exemple : Avril 08 (2024/04/28)

    Nom : Capture d’écran 2024-04-28 122744.png
Affichages : 141
Taille : 8,1 Ko
    1 erreur !!!

    Merci

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

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

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

    https://github.com/laurentbouleau/Exemple : Avril 09 (2024/04/29)

    Nom : Capture d’écran 2024-04-29 161757.png
Affichages : 176
Taille : 8,7 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
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    void InfosVisionnage::Print()
    {
        std::wstring wstr;
        bool chiffre_et_point_ou_pas = Print_Titre_chiffre_et_point_ou_pas(m_NumeroEpisode);
        if (chiffre_et_point_ou_pas)
        {
            wstr = std::to_wstring(m_NumeroSaison) + keyColor[1] + L'x' + valuesColor + std::to_wstring(m_NumeroEpisode) + keyColor[1] + L" : " + valuesColor;
        }
        wstr += keyColor[1] + m_titre + valuesColor;
        if (m_deux_points != L"")
            wstr += m_deux_points + keyColor[1] + m_sous_titre + valuesColor;
        if (m_numero == 1)
        {
            wstr += keyColor[1] + L" (" + valuesColor + std::to_wstring(m_Duree / 60) + keyColor[1] + m_min + L')' + valuesColor;
        }
        else
        {
            //wstr += keyColor[1] + L" [" + valuesColor + std::to_wstring(numero++) + keyColor[1] + L']' + valuesColor;
            //wstr += keyColor[1] + L" [" + valuesColor + std::to_wstring(saison_episode.numero++) + keyColor[1] + L']' + valuesColor;
            //wstr += keyColor[1] + L" [" + valuesColor + std::to_wstring(1 + saison_episode.numero++) + keyColor[1] + L']' + valuesColor;
            //numero++;
            //saison_episode.numero++;
        }
        wstr += keyColor[1] + L" : " + valuesColor;
        wstr += Print_Dates_de_visionnage(m_DatesVisionnage);
     
        // phrases
        if (m_numero == 1)//titre != L"")
        {
            wstr += L"\r\n" + m_phrases;
            //saison_episode.numero = 1;
        }
        std::wcout << wstr << std::endl;
    }
     
    ...
    bool InfosVisionnage::Print_Titre_chiffre_et_point_ou_pas(unsigned short int episode)
    {
        if (episode == 0)
            return false;
        return true;
    }
    ...
    SequenceVisionnage::SequenceVisionnage(InfosVisionnage const& vis)
    {
     
    }
    ...
    void SequenceVisionnage::Print()
    {
        //???;
    }
     
     
    Episode::Episode(SequenceVisionnage const& seq_vis)
    {
     // ???
    }
    void Episode::ajouter_InfosVisionnage(InfosVisionnage const& seq_vis)
    {
        // ???
    }
    void Episode::Print()
    {
     
        Print_Data();
        for (auto vis : m_liste_visionnages)
        {
            vis.Print();
        }
    }
    void Saison::ajouter_InfosVisionnage(SequenceVisionnage const& seq_vis)
    {
    // ???
    }
    void Saison::creer_SequenceVisionnage(fs::path const& m_cheminFichier)
    {
    //    auto nomFichier = m_cheminFichier.filename().wstring();
     
    //    assert(nomFichier.length() > 0 && L"Nom de fichier vide");
    //    Episode episode(m_cheminFichier);
    //    episodes.push_back(episode); // Episode
    }
    et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    struct SequenceVisionnage
    {
        SequenceVisionnage(InfosVisionnage const& vis);
        void Print();
        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::vector<InfosVisionnage>m_liste_visionnages;
    };
    Je suis crevé
    Merci

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 409
    Points : 0
    Points
    0
    Par défaut
    Nom : Capture d’écran 2024-04-29 161757.png
Affichages : 176
Taille : 8,7 Ko
    Que faire ?

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 409
    Points : 0
    Points
    0
    Par défaut
    https://github.com/laurentbouleau/Exemple : Avril 10 (2024/04/30)

    Nom : Capture d’écran 2024-04-30 222253.png
Affichages : 119
Taille : 37,8 Ko
    Pas compris !!!

    J'en ai marre
    Crevé

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

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

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

    Nom : Capture d’écran 2024-05-01 191320.png
Affichages : 114
Taille : 10,0 Ko

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

    Microsoft Visual Studio Community 2022 (64 bits) ---> Test : ok ! Mais... le quel ?

    Et :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Episode Saison::creer_Episode(SequenceVisionnage const& seq_vis)
    {
    //    auto nomFichier = m_cheminFichier.filename().wstring();
    
    //    assert(nomFichier.length() > 0 && L"Nom de fichier vide");
        //Episode episode(cheminFichier);
    //    SequenceVisionnage(m_cheminFichier);
        //episodes.push_back(episode); // Episode
    //    sequencevisionnages.push_back(sequencevisionnage);
    }
    Merci

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 409
    Points : 0
    Points
    0
    Par défaut
    Nom : Capture d’écran 2024-05-01 224838.png
Affichages : 108
Taille : 8,9 Ko

    https://github.com/laurentbouleau/Exemple : Mai 02 (2024/05/01)

    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
    struct SequenceVisionnage
    {
        SequenceVisionnage(InfosVisionnage const& vis);
        //void initialiser_duree(std::wstring& m);
        void Print();
        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::vector<InfosVisionnage>m_liste_visionnages;
    };
     
    struct Episode
    {
        //struct Saison;
    //    Episode(std::filesystem::path const& cheminFichier);
        Episode(SequenceVisionnage const& seq_vis);
     
        void ajouter_InfosVisionnage(InfosVisionnage const& seq_vis);
        void creer_Episode(InfosVisionnage const& seq_vis);
     
        void Print();
        void Print_Data();
        //::vector<InfosVisionnage> info_vis;
    //    std::vector<SequenceVisionnage> sequencevisionnages;
        std::vector<SequenceVisionnage> m_liste_visionnages{ 0 };
    };
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Episode Saison::creer_Episode(InfosVisionnage const& seq_vis)
    {
        //    auto nomFichier = m_cheminFichier.filename().wstring();
     
        //    assert(nomFichier.length() > 0 && L"Nom de fichier vide");
            //Episode episode(cheminFichier);
        //    SequenceVisionnage(m_cheminFichier);
            //episodes.push_back(episode); // Episode
        //    sequencevisionnages.push_back(sequencevisionnage);
    }
    ???
    Tant pis

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

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

    Informations forums :
    Inscription : Avril 2021
    Messages : 409
    Points : 0
    Points
    0
    Par défaut
    La nuit

    https://learn.microsoft.com/fr-fr/cp...?view=msvc-170 : Français
    https://en.cppreference.com/w/cpp/container/map : Anglais : Oubliqué à dire !
    Pourquoi ? Espriqué ?

    Merci

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

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

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

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

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

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

    https://github.com/laurentbouleau/Exemple : Mai 07 (2024/05/06)

    Nom : Capture d’écran 2024-05-06 195324.png
Affichages : 64
Taille : 105,3 Ko

    Marche pas !

    J'en ai marre

  13. #613
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 086
    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 086
    Points : 12 153
    Points
    12 153
    Par défaut
    Désolé pour le délai.
    J'ai voulu prendre un peu de temps pour offrir un exemple d'architecture de classes "facilement" implémentable.

    Je vous la fournis sous forme d'un extrait de serie.h basée sur la version "Avril 07" du 25/04/2024

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    struct InfosVisionnage
    {
        const Saison& m_saison;
     
        InfosVisionnage(const Saison& saison, std::filesystem::path const& m_cheminFichier);
     
        std::filesystem::path m_cheminFichier;
     
        unsigned short int m_NumeroSaison{};
        unsigned short int m_NumeroEpisode{}; 
        std::vector<DateRecord> m_DatesVisionnage{ 0 };
        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;
        unsigned short int m_numero{ 1 };
        long m_Duree{ -1 };
        std::wstring m_phrases{ L"" };
     
    private :
        void initialiser_duree(const std::wstring& m);
    };
     
    struct SequenceVisionnage
    {
        SequenceVisionnage(const Episode& episode) :m_episode{ episode } {};
        SequenceVisionnage(const SequenceVisionnage& seq) = 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;
    };
     
    struct Episode
    {
        const Saison& m_saison;
        Episode(const InfosVisionnage& inf_vis)  :m_saison{inf_vis.m_saison} {};
     
        void Print();
        std::vector<SequenceVisionnage> m_liste_visionnages{};
        void ajouter_SequenceVisionnage(const InfosVisionnage&  info_vis);
     
        int m_numero{ -1 };
        long m_Duree{ -1 };
        std::wstring m_phrases{ L"" };
    };
     
    struct Saison
    {
    public:
        Saison(std::filesystem::path const& cheminFichier);
        void afficher(std::filesystem::path const& cheminFichier);
        void ajouter_InfosVisionnage(SequenceVisionnage const& seq_vis);
     
        void initialiser_Fichier(std::filesystem::path const& cheminFichier);
     
        void initialiser_Chaine(std::filesystem::path const& cheminFichier);
        void initialiser_Netflix(std::filesystem::path const& cheminFichier);
        void initialiser_Note(std::filesystem::path const& cheminFichier);
        void initialiser_Titre(std::filesystem::path const& cheminFichier);
     
     
        void Print();
        void Print_Avec();
        void Print_Chaine();
        const void Print_Date_etc();
        void Print_Images();
        void Print_Netflix();
     
        std::wstring 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::vector<std::pair<std::wstring, std::wstring>> m_avec;
        std::pair<std::tm, std::wstring>m_dossier;
        std::wstring m_chaine;
        std::vector<std::wstring> m_image;
        bool netflix{ false };
        double m_note = -1.0;
        std::pair<unsigned short int, std::wstring>saison;
        std::wstring m_titre;
     
        bool affichage_avec_actif = true;
        bool affichage_chaine_actif = true;
        bool affichage_date_etc_actif = true;
        bool affichage_image_actif = true;
        bool affichage_netflix_actif = true;
     
        std::map<int, std::shared_ptr<Episode>> m_liste_episodes;
     
        int m_numero{ -1 };
    };
     
    class Serie
    {
    public:
        Serie(std::filesystem::path racine);
        ~Serie();
        void initialiser_Fichier(std::filesystem::path const& m_cheminFichier);
        void initialiser_Chaine(std::filesystem::path const& m_cheminFichier);
     
        const void Print();
     
        std::vector<Saison>saisons{};
        std::filesystem::path getRacine() { return racine; };
        std::filesystem::path getFileName() { return racine.filename(); };
    private:
        const void Print_Saison(Saison saison);
        const void Print_Saisons();
        const void Print_Chaine();
     
        std::filesystem::path racine;
     
        std::wstring 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_audiodescription;
        std::wstring m_chaine;
        std::vector<std::wstring> m_genre;
        std::vector<std::wstring> m_image;
        std::vector<std::wstring> m_nationalite;
        std::wstring m_sous_genre{};
     
     
        bool affichage_avec_actif = true;
        bool affichage_audiodescription_actif = true;
        bool affichage_chaine_actif = true;
        bool affichage_episode_titre_actif = true;
        bool affichage_image_actif = true;
        bool affichage_genres_actif = true;
        bool affichage_nationalite_actif = true;
        //bool affichage_saison_actif = true;
        bool affichage_saison_date_etc_actif = true;
        bool affichage_saisons_actif = true;
        bool affichage_serie_actif = true;
        bool affichage_sous_genre_actif = true;
    };
    EDIT :
    Je pense que vos galères sont toutes liées aux types de vos champs, par exemple, j'utilise des ici des pointeurs intelligents :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::map<int, std::shared_ptr<Episode>> m_liste_episodes;
    ainsi, le code dans le .h
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Episode(SequenceVisionnage const& seq_vis);
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Episode(const InfosVisionnage& inf_vis);
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ajouter_InfosVisionnage(SequenceVisionnage const& seq_vis);
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void ajouter_InfosVisionnage(InfosVisionnage const& seq_vis);
    supprimer la ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Episode creer_Episode(InfosVisionnage const& seq_vis);
    ainsi que l'implémentation dans le .cpp


    le code dans le .cpp
    mettez en commentaire tout le code de la fonction "Episode::Episode(const InfosVisionnage& inf_vis)".
    On verra ensemble comment l'implémenter "correctement".

    Le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    void Saison::ajouter_InfosVisionnage(SequenceVisionnage const& seq_vis)
    {
        m_liste_episodes.insert({ 1, seq_vis });
    }
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    void Saison::ajouter_InfosVisionnage(const InfosVisionnage& inf_vis)
    {
        Episode ep{ inf_vis };
        m_liste_episodes.emplace(std::pair<const int, shared_ptr<Episode>>{ inf_vis.m_NumeroEpisode, make_shared<Episode>(ep)});
    }
    le code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    if (m_liste_episodes.find(info_vis.m_NumeroEpisode) != m_liste_episodes.end())
    {
        m_liste_episodes[info_vis.m_NumeroEpisode].ajouter_InfosVisionnage(info_vis);
    }
    else
    {
        //m_liste_episodes[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) });
    }
    devient
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    if (m_liste_episodes.find(info_vis.m_NumeroEpisode) != m_liste_episodes.end())
    {
        m_liste_episodes[info_vis.m_NumeroEpisode]->ajouter_InfosVisionnage(info_vis);
    }
    else
    {
        //m_liste_episodes[info_vis.m_NumeroEpisode] = creer_Episode(info_vis);
        Episode ep{ info_vis };
        m_liste_episodes.emplace(std::pair<const int, shared_ptr<Episode>>{ info_vis.m_NumeroEpisode, make_shared<Episode>(ep) });
    }

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

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

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

    Merci beaucoup

    Mais, pouvez-vous expliquer pas-à-pas :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SequenceVisionnage(const Episode& episode) :m_episode{ episode } {};
    Puis :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SequenceVisionnage(const SequenceVisionnage& seq) = default;
    Etc...

  15. #615
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 086
    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 086
    Points : 12 153
    Points
    12 153
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SequenceVisionnage(const Episode& episode) :m_episode{ episode } {};
    C'est le constructeur d'un objet "SequenceVisionnage".
    C'est une version compressée équivalent à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SequenceVisionnage(const Episode& episode)
    {
        m_episode = episode;
    };
    Mais la version "compressée" permet un peu plus de choses, comme l'initialisation de champs "constants".

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SequenceVisionnage(const SequenceVisionnage& seq) = default;
    C'est aussi un constructeur d'un objet "SequenceVisionnage" mais qui prend en paramètre un autre objet "SequenceVisionnage", ça permet un "clonage" de l'objet.
    C'est souvent nécessaire pour utiliser "confortablement" des containers (vector, map, etc...) de la STL.

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

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

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

    const : pas évidemment !!!

    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& seq_vis) :m_saison{ info_vis.m_saison } {};
    ...
    serie.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Episode::Episode(InfosVisionnage const& seq_vis)
    {
        // ???
    }
    Avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier)
    {
    ...
    }
    Merci

  17. #617
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 086
    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 086
    Points : 12 153
    Points
    12 153
    Par défaut
    Quelle est la question ?

    Vous nous donnez des ébauches de définition de constructeur.

    Le rôle principal d'un constructeur est d'initialiser les champs de l'objet à partir des paramètres du constructeur.

    Si vous connaissez les champs de la classe du constructeur et des types de ses paramètres, c'est juste affecter les valeurs des champs de l'objet à partir des champs des objets/valeurs passés en paramètre.

    Pour simplifier les codes des constructeurs et les codes qui s'en serviront, j'anticipe qu'avoir accès à la saison à partir d'un objet InfosVisionnage sera pratique.

    Donc, j'ajoute un champ "m_saison" à cette classe InfosVisionnage de type "const Saison&".
    "const" car je n'envisage pas de cas d'usage qui modifierait la saison à partir d'un objet InfosVisionnage. "const" devrait être le "réglage par défaut" mais le poids historique du C sur le C++ fait que non, il faut spécifier quand un champ n'est pas modifiable plutôt que spécifier quand il est modifiable (mutable).
    Une référence "&" car un ne veut pas d'un InfosVisionnage avec un champ m_saison non initialisé. (contrairement à ce que permet de faire un pointeur)
    Mais en ajoutant ce champ, il faut passer au constructeur de InfosVisionnage de quoi l'initialiser.
    D'où le changement de signature du constructeur de InfosVisionnage.

    Donc dans serie.h:
    On passe de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    struct InfosVisionnage
    {
        InfosVisionnage(std::filesystem::path const& m_cheminFichier);
    ...
        std::filesystem::path m_cheminFichier;
    ...
    };
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct InfosVisionnage
    {
        InfosVisionnage(const Saison& saison, const std::filesystem::path const& m_cheminFichier);
    ...
        const std::filesystem::path& m_cheminFichier;
    ...
        const Saison& m_saison;
    ...
    };
    et dans serie.cpp
    de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    InfosVisionnage::InfosVisionnage(fs::path const& cheminFichier)
    {
    ...
    }
    à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    InfosVisionnage::InfosVisionnage(const Saison& saison, const fs::path const& cheminFichier): m_saison{saison}, m_cheminFichier{cheminFichier}
    {
    ...
    }
    Ainsi de suite
    Et avoir un champ m_saison dans la classe Episode serait bien pratique.

    Avec cette approche, quand, dans le constructeur d'Episode qui prend en entré un InfosVisionnage doit initialiser son champ m_saison, on utilise la même approche mais en utilisant le champ m_saison de l'objet "InfosVisionnage" passé en paramètre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Episode(const InfosVisionnage& info_vis) :m_saison{ info_vis.m_saison }
    {
    ...
    };

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

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

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

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

    Merci

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

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

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

    void Saison::initialiser_Fichier :
    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
            if (std::regex_match(nomFichier, std::wregex{ L"([[:digit:]]{1,2})x(.)+" }))
            {
                //creer_InfosVisionnage(m_cheminFichier);
                //InfosVisionnage info_vis{ m_cheminFichier };
                InfosVisionnage info_vis{ *this, m_cheminFichier};
                if (m_liste_episodes.find(info_vis.m_NumeroEpisode) != m_liste_episodes.end())
                {
    ???
                }
                else
                {
    ???
                }
                return;
            }
    Merci

  20. #620
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 086
    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 086
    Points : 12 153
    Points
    12 153
    Par défaut
    C'est toujours assez difficile de répondre sans "vraies" questions.
    Car on ne connait pas la nature de vos difficultés.

    La code que vous postez correspond à une partie du code qui est en charge de "traduire" le contenu d'un répertoire "racine" d'une saison (des fichiers ici) en informations.

    De nos multiples Questions/Réponses, on a interprété qu'un fichier dans le répertoire racine d'une saison qui commence par 1 ou 2 chiffres suivi d'un "x" puis d'autre caractères est une séquence de séances de visionnage.
    C'est la signification de l'expression régulière "([[:digit:]]{1,2})x(.)+".
    "[[:digit:]]" pour des chiffres.
    "{&,2} pour 1 ou 2
    "(...)" pour récupérer ce qui correspond à ce qui est entre parenthèses.
    "([[:digit:]]{1,2})" on récupère le numéro de la saison qui est en début de nom de fichier.
    "x" pour le caractère "x" qui doit apparaître dans le nom du fichier.
    "(.)+" pour récupérer tout caractère d'au moins un caractère de long.

    (Personnellement, je pense qu'un devrait avoir une expression régulière plus spécifiques pour récupérer plus d'information et éviter des "faux positifs")

    Et "InfosVisionnage(this, m_cheminFichier);", c'est l'appel à un constructeur à qui on donne toutes les informations pour qu'il construise un objet "InfosVisionnage" qui collectera toutes les informations de ce fichier(nom + contenu du fichier).


    EDIT: erreur dans le code posté :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    InfosVisionnage info_vis(this, m_cheminFichier);
                if (m_liste_episodes.find(info_vis.m_NumeroEpisode) != m_liste_episodes.end())

+ 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