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

    https://github.com/laurentbouleau/Exemple : Juillet 19 (18/07/2024)

    ===> std::tm tm{ -1, -1, -1, -1, -1, -1, -1, -1, -1 };

    Voilà !

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

    Vous ne pouvez pas lire les posts avec des listes à puces (LIST) ou vous ne pouvez pas répondre "facilement" à ces posts ?
    J'ai beaucoup de mal à lire, donc j'utilise le narrateur de l'ordi. Mais pour lire les listes à puces (LIST) : le narrateur bugue !!! J'ai Windows 10. Peut-être que ça marcherait avec le narrateur de Windows 11?

    Pouvez-vous résumer en quelques mots ce qu'est une structure en C ?
    Quelles différences entre une structure C et une structure en C++, toujours en quelques mots ?
    Je sais ce qu'est une strusture en C, mais je ne peux pas l'expliquer, à cause de mes troubles du langage (aphasie). Je vois un peu la différence entre la structure en C et en C++, mais ce n'est pas clair du tout pour moi.
    J'ai appris C++ par moi-même après mon AVC, donc c'est compliqué pour moi.

    Pouvez-vous expliquer ce que vous avez compris du fonctionnement actuel de votre programme ?
    Je pourrais voir là où vous faites fausse route dans votre compréhension du programme.
    Non, je ne peux pas l'expliquer; ce n'est pas clair pour moi. En plus, je ne peux pas écrire des phrases complètes tout seul.
    Là, c'est mon orthophoniste qui écrit ce que je veux dire.

    Pour moi, ce serait vraiment plus facile si vous donniez des indications peu à peu, de façon courte. Lire une très grande page d'explications est très décourageant car ça me prend des heures.

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

    (Moi même !)
    Mais, exemple :
    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
    int wmain(int argc, wchar_t* argv[])
    {
    ...
        const std::wstring racine = t + L"Azertyuiop - qsdfghjklm.[2021-2023 Netflix].Manga";
    ...
        bool found = false;
        std::wregex film_pattern{ L"(.+?)(?:\\.\\((\\d{4}\\-\\d{2}\\-\\d{2}\\s)?([^\\)]*)\\))?(?:\\.(.+))?" };
        std::wsmatch match;
        if (!found && std::regex_match(nomDossier, match, film_pattern))
        {
            Film film(racine);
            found = true;
            for (const auto& entry_film : fs::directory_iterator((film.getRacine())))
            {
                if (entry_film.is_regular_file())
                {
                    film.initialiser_Fichier(entry_film);
                    continue;
                }
            }
            film.Print();
            found = true;
        }
        if (!found)
        {
            std::wregex serie_pattern{ L"(.+?)(?:\\.\\[(\\d{4}\\s|\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\s|\\d{4})?([^\\]]*)\\])?(?:\\.(.+))?" };
            std::wsmatch match2;
            if (!found && std::regex_match(nomDossier, match2, serie_pattern))
            {
                Serie serie(racine);
                for (const auto& entry_serie : fs::directory_iterator((serie.getRacine())))
                {
                    if (entry_serie.is_regular_file())
                    {
                        serie.initialiser_Fichier(entry_serie);
                        continue;
                    }
                    if (fs::is_directory(entry_serie))
                    {
                        Saison saison(entry_serie, serie);
                        for (const auto& entry_saison : fs::directory_iterator(entry_serie))
                        {
                            if (entry_saison.is_regular_file())
                            {
                                saison.initialiser_Fichier(entry_saison);
                            }
                        }
                        serie.saisons.push_back(saison);
                    }
                }
                serie.Print();
            }
        }
    ...
    }
    ===>
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     const std::wstring racine = t + L"Azertyuiop - qsdfghjklm.[2021-2023 Netflix].Manga";
    Je n'y arrive pas !

    Merci

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

    Exemple serie.cpp :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    const void Serie::Print_Header()
    {
    ...
            if (affichage_sur_actif && m_sur != L"" && m_sur != L"Disney+" && m_sur != L"Netflix")
            {
                sur_str += keyColor[0] + L" (" + keyColor[1] + L"sur " + valuesColor + m_sur + keyColor[0] + L')' + valuesColor;
            }
            if (affichage_sur_actif && (m_sur == L"Disney+" || m_sur == L"Netflix"))
            {
                sur_str += keyColor[0] + L" (" + keyColor[1] + L"sur " + valuesColor + m_sur + keyColor[1] + L" : " + valuesColor;
                // Disney+ SJ
                if (affichage_disney_sj_actif && m_disney_sj.length() != 0)
                    sur_str += m_disney_sj;
                // Netflix SJ
                if (affichage_netflix_sj_actif && m_netflix_sj.length() != 0)
                    sur_str += m_netflix_sj;
                sur_str += keyColor[0] + L')' + valuesColor;
            }
            else
            {
                // Disney+ SJ
                if (affichage_disney_sj_actif && m_disney_sj.length() != 0)
                    sur_str += keyColor[0] + L" (" + valuesColor + L"Disney+" + keyColor[1] + L" : " + valuesColor + m_disney_sj + keyColor[0] + L')' + valuesColor;
                // Netflix SJ
                if (affichage_netflix_sj_actif && m_netflix_sj.length() != 0)
                    sur_str += keyColor[0] + L" (" + valuesColor + L"Netflix" + keyColor[1] + L" : " + valuesColor + m_netflix_sj + keyColor[0] + L')' + valuesColor;
           }
    ...
    }
    Ok ! Mais, tant pis !

    Et :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    InfosVisionnage::InfosVisionnage(const Saison& saison, fs::path const& m_cheminFichier) : m_saison{ saison }
    {
    ...
        if (file_content.size() > 2)
        {
            //file_content.erase(file_content.begin());  //bof à revoir
            //file_content.erase(file_content.begin()); //bof à revoir
            file_content.erase(file_content.begin(), file_content.begin() + 1);
            m_resume = file_content;
        }
    }
    Merci

  4. #804
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 148
    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 148
    Points : 12 256
    Points
    12 256
    Par défaut
    Pour l'utilisation des "puces", je ne les utiliserai plus ici.
    J'ai ouvert un sujet sur le forum lié aux évolutions "des forums", pour voir s'il s'agit d'un problème connu. (voir s'il y a une solution de "contournement")

    Pour les longs messages, comme vous faites beaucoup de messages entre chacune de mes réponses, que les questions n'y sont pas forcément très claires et que vous ne répondez pas aux questions de mes réponses précédentes, cela fait mécaniquement augmenter la taille des réponses suivantes, pour ne pas "perdre" de sujets.
    Mais comme cela part dans tous les sens. Je vais vraisemblablement "élaguer" des choses, quitte à revenir après sur le sujet.

    Je vais donc répondre à mes propres questions car vous ne semblez pas pouvoir "facilement" y répondre. (Si vous ne comprenez pas la réponse indiquez le moi explicitement et ce que vous ne comprenez pas dans mon "autoréponse").
    - Une structure de données en C est un regroupement d'informations/données.
    - Uns structure de données en C++, c'est comme une structure en C, mais on n'y ajoute les fonctions nécessaires à l'initialisation des données (via le constructeur) et la manipulation "cohérente" de ces données (c'est une très mauvaise définition mais c'est un début et on verra plus tard comment utiliser/concevoir "correctement" une structure/classe C++).
    - L'architecture du programme s'articule en 3 "étapes" :
    -> initialisation de l'environnement d'exécution (lignes 440 à 470 d'Exemple.cpp)
    -> création d'une arborescence d'objets contenant les informations qui nous intéressent (cf. le schéma ci-après) (lignes 476 à 530 d'Exemple.cpp)
    -> affichage des informations récoltées dans la console (ligne 531 d'Exemple.cpp)

    (Le découpage est assez "arbitraire" car le code est assez mal structuré, mais c'est pas très compliqué à corriger.)

    Schéma de l'arborescence des objets créées pendant la 2ème étape du programme :
    Nom : developpez7.png
Affichages : 57
Taille : 54,6 Ko
    Il y a les lignes noirs qui vont du tronc de l'arbre, ici le seul et unique objet "Serie" créé ligne 509 d'Exemple.cpp, vers les feuilles : les séquences de visionnages.
    saisons -> m_liste_episodes -> m_liste_sequence_visonnages
    Il y a aussi les flèches de couleurs, qui vont dans l'autre sens, des feuilles vers le tronc.
    m_episode -> m_saison -> m_serie

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    void SequenceVisionnage::UneFonctionDeLaClasseSequenceVisionnage(...)
    {
        ...
        auto NumeroSequenceVisionnage = m_episode.GetNumeroSequenceVisionnage(*this);
        ...
    }
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    void SequenceVisionnage::UneFonctionDeLaClasseSequenceVisionnage(???)
    Pouvez-vous expliquer ?
    "UneFonctionDeLaClasseSequenceVisionnage", c'est juste le nom d'une fonction quelconque de la classe SequenceVisionnage, qu'elle existe déjà ou une future/nouvelle fonction.
    Elle ne devrait jamais s'appeler "UneFonctionDeLaClasseSequenceVisionnage" car cela n'a pas de signification "valable".

    (foireuse cette boucle, utilisez plutôt une "range-based for loop")
    Oui ! Comment faire ?
    Déjà expliqué :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    const void Serie::Print_Saisons()
    {
        if (affichage_saisons_actif)
        {
            for (auto saison : saisons)
            {
                Print_Saison(saison);
            }
        }
    }
    Les "boucles" ("range-based for loop") permettent d'aller dans toutes les "branches/feuilles" de l'arborescence (de gauche à droite sur le schéma ci-avant).
    Ben, alors, ... ???
    Bin, c'est vous qui devez me donner un exemple d'accès à des données qui vous bloque.

    Rien compris !!!
    On va le faire pas à pas.
    Donnez-moi à quoi doit ressembler l'affichage des informations, SVP.

    Ben, non !
    Heu, bon si, c'est pas vous qui choisissez comment fonctionnent les expressions régulières, vous devez savoir comment elles fonctionnent pour pouvoir vous en servir correctement.

    C'est pas forcement évident, la preuve, un mème qu'un collèque vient de m'envoyer :
    https://www.topito.com/top-gif-code-developpeur

    Ben, non :
    Exemple :
    Phrase
    Ben oui !
    Phrase / verber
    Phrase : titre !
    verbre : sous-titre !
    Et :
    Rien compris, en plus le code qui suit ne correspond pas aux formats et n'utilise pas d'expression régulière.

    Message du "16/07/2024, 10h13":
    Quel est la question ?
    Quel rapport avec les pages Web.
    J'ai déjà signalé que votre approche n'est pas adaptée à la récupération d'information via du "scrapping" de site Web.

    Message du "16/07/2024, 22h25"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if (match[2].matched) // Marches pas !!!
    Bin normale, "match[1]" contient l'année de départ et "match[2]" est le mois de départ, qui n'est pas renseigné, donc "match[2].matched" est 'false'.

    Message du "17/07/2024, 15h22" :
    Pouvez-vous utiliser le débugueur pour voir où cela ne fonctionne pas ?
    Comme vous ne nous donnez pas le format des noms de fichiers mais juste des cas d'utilisation, cela complexifie inutilement l'expression régulière : quel est donc le format des noms de fichiers, SVP ?

    Erreur C4716:
    Rrr !!!
    Vous devriez être capable de corriger vous-même cette erreur

    Compliqué !
    Pas-à-pas !!!
    Je ne comprends pas, vous me demandez de faire du pas-à-pas sur du code que vous avez vous-même créé.

    ===> std::tm tm{ -1, -1, -1, -1, -1, -1, -1, -1, -1 };
    Pourquoi vous emmerdez avec un std::tm, quand vous n'avez pas de "time" ???

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::wstring racine = t + L"Azertyuiop - qsdfghjklm.[2021-2023 Netflix].Manga";
    Je n'y arrive pas !
    Ici, c'est un peu compliqué.
    Vous avez 4 motifs possibles (alternatives) :
    \\d{4}\\s => Année + un espace
    \\d{4}\\-\\d{4}\\s => "Année1 - Année2" + un espace
    \\d{4}\\-\\s => "Année-", comme dans "Tracker.[2024-]", + un espace (et c'est pour ça que cette formule échoue pour "Tracker.[2024-]"
    \\d{4} => Année

    Les alternatives sont évaluées dans l'ordre dans lequel elles apparaissent dans l'expression régulière.
    Donc, pour ne pas avoir de problème, vous devriez commencer par les alternatives les plus longues puis les un peu plus courtes, etc... jusqu'aux plus courtes.

    Pour le cas "Tracker.[2024-]", il n'y a pas d'alternavite qui accepte ce motif.
    Le plus simple, c'est d'ajouter le motif "\\d{4}\\-" aux autres, mais en respectant l'ordre "du plus long au plus court".
    Faites des tests avec https://regex101.com pour comprendre comment ça fonctionne. Mais commencez avec des cas simples.
    Une fois que vous avez une expression régulière qui fonctionne avec le nouveau format, ajoutez l'alternative correspondante à la la capture qui est entre parenthèses "()" en respectant l'ordre "du plus long au plus court".

    Pour rappel, les différentes alternatives d'une capture sont séparées par un caractère "|" (pipe).

    Je suis encore en train de faire un message à rallonge pour répondre à toutes vos "interrogations" mais comme vous faites au moins 3 versions entre chacune de mes réponses et que vous modifiez énormément de code à chaque fois, sans vraiment le simplifier, ça tombe toujours à coté.

    Je vous demande de poster une version, avec UNE question qui correspond à l'étape que vous voulez atteindre grâce à une réponse de ma part, et d'attendre ma réponse avant dans poster d'autres versions et d'autres questions, SVP.

    Dans la (l'une des) version(s) sous Git "Juillet 20 (23/07/2024)", les "lInfoQuiMInteresse" et "Une_Fonction_De_La_Classe_SequenceVisionnage" ne devraient pas exister (à moins que c'est pour vos tests de compréhension).
    Il y a quasiment systématiquement 2 versions avec le même nom dans Git, faudrait configurer votre client Git pour qu'il nomme "correctement" (de manière unique) les versions sous Git.

    Dans cette même version, si vous utilisez correctement le débugueur pour faire du pas à pas, vous devriez voir que la ligne 505 d'Exemple.cpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    std::wregex serie_pattern{ L"(.+?)(?:\\.\\[(\\d{4}\\s|\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\s|\\d{4})?([^\\]]*)\\])?(?:\\.(.+))?" };
    pose un problème avec le répertoire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const std::wstring racine = t + L"Star Wars- The Clone wars.[2008-2020].Animation";
    Car l'expression régulière ne gère pas le fait qu'une paire d'année ne soit pas suivi par un espace.
    Mais cela ne crée pas de disfonctionnement immédiat car le test "std::regex_match(nomDossier, match2, serie_pattern)" est toujours bon, même si le découpage en motif est foireux.

    On a la même expression régulière un peu plus loin dans le code, ligne 1236 de serie.cpp, "std::wregex filename_pattern{ L"(.+?)(?:\\.\\[(\\d{4}\\s|\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\s|\\d{4})?([^\\]]*)\\])?(?:\\.(.+))?")", qui pose le même problème mais qui entraîne ici un disfonctionnement car le découpage foireux a un impact dans la suite du code.
    (Avoir la même expression régulière à 2 endroits différents du code, c'est vraiment pas terrible)

    En réordonnant les alternatives de la plus longues à la plus courte et en ajoutant la nouvelle alternative (en rouge dans le code ci-après), et en corrigeant aussi l'expression régulière ligne 1248, ça donne :

    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
    Serie::Serie(std::filesystem::path racine)
    {
        this->racine = racine;
        auto nomDossier = racine.filename().wstring();
        assert(nomDossier.length() > 0 && L"Nom de dossier vide");
    
    
        std::wregex filename_pattern{ L"(.+?)(?:\\.\\[(\\d{4}\\-\\d{4}\\s|\\d{4}\\-\\d{4}|\\d{4}\\-\\s|\\d{4}\\s|\\d{4})?([^\\]]*)\\])?(?:\\.(.+))?" };
        std::wsmatch match;
        if (std::regex_match(nomDossier, match, filename_pattern))
        {
            std::wstring titres = match[1];
            m_titres = Dossier_Titres(titres);
            if (match[2].matched)
            {
                std::wstring annees_str = match[2].str();
                std::wsmatch dummy;
                if (std::regex_match(annees_str, dummy, std::wregex(L"\\d{4}\\-\\d{4}\\s?")))
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                    m_f_anneesProduction.second = stoi(annees_str.substr(5));
                }
                else
                {
                    m_f_anneesProduction.first = stoi(annees_str);
                }
            }
    
            m_sur = (match[3].matched) ? match[3].str() : L"";
    
            std::wstring sous_genre = (match[4].matched) ? match[4].str() : L"";
            m_sous_genre = sous_genre;
        }
        else
        {
            assert(false == true && "Le nom du répertoire n'est pas un nom valide.");
        }
    }
    Avec ce code, les champs m_f_anneesProduction.first et m_f_anneesProduction.second sont correctement *initialisés.

    On peut, je pense, simplifier les expressions régulières mais vous devez nous donner le format des noms de répertoires/fichiers de manière plus synthétique.

    P.S.: est-ce que des schémas comme dans ce post vous permet de mieux comprendre ?

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

    Je vais donc répondre à mes propres questions car vous ne semblez pas pouvoir "facilement" y répondre. (Si vous ne comprenez pas la réponse indiquez le moi explicitement et ce que vous ne comprenez pas dans mon "autoréponse").
    - Une structure de données en C est un regroupement d'informations/données.
    Ben oui ! Mais, j'ai perdu en capacité !!! C'est vrai ! L'AVC !

    - Uns structure de données en C++, c'est comme une structure en C, mais on n'y ajoute les fonctions nécessaires à l'initialisation des données (via le constructeur) et la manipulation "cohérente" de ces données (c'est une très mauvaise définition mais c'est un début et on verra plus tard comment utiliser/concevoir "correctement" une structure/classe C++).
    Ben non !

  6. #806
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 148
    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 148
    Points : 12 256
    Points
    12 256
    Par défaut
    Ben non !
    Ok, vous avez peut-être une définition plus "exacte" de ce qu'est une structure en C++.
    Pouvez-vous m'indiquer en quelques mots, avec des exemples si nécessaire, ce qui vous fait dire que "ma" définition simpliste n'est pas la "bonne" ?

    Si, c'est "non, je ne sais pas", vous n'avez retenir que ce que j'ai indiqué :
    Une structure de données en C++, c'est comme une structure en C, mais on n'y ajoute les fonctions nécessaires à l'initialisation des données (via le constructeur) et la manipulation "cohérente" de ces données (c'est une très mauvaise définition mais c'est un début et on verra plus tard comment utiliser/concevoir "correctement" une structure/classe C++).
    Voulez-vous des schéma graphiques plus "propres" pour vous aider dans la compréhension de l'arborescence de fichier ?

    Avez-vous "compris" la correction de la fonction "Serie::Serie(std::filesystem::path racine)" que j'ai proposé dans mon précédent post.

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

    Peux dormir !

    Ok, vous avez peut-être une définition plus "exacte" de ce qu'est une structure en C++.
    Un peux :
    Exemples : https://zestedesavoir.com/tutoriels/...-en-c-moderne/
    Après, c'est dure !!!

    Pouvez-vous m'indiquer en quelques mots, avec des exemples si nécessaire, ce qui vous fait dire que "ma" définition simpliste n'est pas la "bonne" ?

    Si, c'est "non, je ne sais pas", vous n'avez retenir que ce que j'ai indiqué :
    Ben non !

    Voulez-vous des schéma graphiques plus "propres" pour vous aider dans la compréhension de l'arborescence de fichier ?
    Ok ! Oui !!!

    Avez-vous "compris" la correction de la fonction "Serie::Serie(std::filesystem::path racine)" que j'ai proposé dans mon précédent post.
    Comment faire
    "compris"
    et
    "précédent post"
    Avant ou plus tard ?

    Merci

  8. #808
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 148
    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 148
    Points : 12 256
    Points
    12 256
    Par défaut
    Citation Envoyé par Laurent_B_ Voir le message
    Bonjour,

    Peux dormir !
    Ok, vous avez peut-être une définition plus "exacte" de ce qu'est une structure en C++.
    Un peux :
    Exemples : https://zestedesavoir.com/tutoriels/...-en-c-moderne/
    Après, c'est dure !!!
    Ok, ça va être compliqué.
    Ce cours fait des simplifications pédagogiques, comme moi, pour permettre l'apprentissage.
    Je ne fais pas les mêmes simplifications, car j'essaye de simplifier le propos en fonction de ce que j'essaye de comprendre de vos difficultés.
    Donc, un peu d'indulgence "épistémique", SVP.

    https://zestedesavoir.com/tutoriels/...-en-c-moderne/
    Page générale, table des matières du cours, rien de précis par rapport à ce que je vous avais demandé/expliqué.

    https://zestedesavoir.com/tutoriels/...-les-fichiers/
    Idem, je vois pas trop le rapport avec ce que je vous avait demandé/expliqué.

    https://zestedesavoir.com/tutoriels/...-discographie/
    Les structures "Artiste", "Album" ou "Morceau" dans l'article du lien ci-dessus sont des structures qui correspondent à MA définition de structure C, et non C++. Ce type de structure est créable quasi identiquement en C.
    Le tutoriel que vous donnez en référence n'a pas été conçu pour aider les programmeurs C à comprendre les différences avec le C++.
    Ils nomment "structures C++" un usage très très simplifié des "classes/structures C++" pour mettre le pied à l'étrier à des personnes sans expériences de la programmation.
    Quand ce tutoriel (au moins au début) indique "structures C++", il faut comprendre "structure à la C", selon ma définition.

    Je n'ai pas lu ce tutoriel, juste survolé, mais ils indiquent que la partie POO n'est pas fini, et c'est la POO qui différentie principalement le C du C++ (au moins au début).

    De ce que j'ai survolé, une utilisation C++ d'une structure est faite ici :
    https://zestedesavoir.com/tutoriels/...ien-serviables
    Dans la structure "Fraction" qui y est présentée, on commence à y insérer des comportements ( par exemple : "simplification()") , pas juste des données ("numerateur" ou "denominateur").

    C'est cette différence que je cherche à vous montrer.
    Est-ce que vous comprenez maintenant cette différence entre une "structure à la C" et une "structure/class C++" ?



    Citation Envoyé par Laurent_B_ Voir le message

    Pouvez-vous m'indiquer en quelques mots, avec des exemples si nécessaire, ce qui vous fait dire que "ma" définition simpliste n'est pas la "bonne" ?

    Si, c'est "non, je ne sais pas", vous n'avez à retenir que ce que j'ai indiqué :
    Une structure de données en C++, c'est comme une structure en C, mais on n'y ajoute les fonctions nécessaires à l'initialisation des données (via le constructeur) et la manipulation "cohérente" de ces données (c'est une très mauvaise définition mais c'est un début et on verra plus tard comment utiliser/concevoir "correctement" une structure/classe C++).
    Ben non !
    "Ben non !", non quoi ???
    Si c'est un refus, vous devez me faire confiance.
    Ce qui est indiqué comme "structure C++" dans le tutoriel que vous référencé sont des "structures à la C".
    Vous devez comprendre la différence avec une "structure/class C++".

    Si "Ben non !", c'est pour votre incapacité à voir la différence, on revient sur le fait qu'une "structure/class C++" contient des comportements (rend des services) en plus de stocker des infirmations.
    C'est la différence entre une structure "Artiste", "Album" ou "Morceau" : "structures à la C" ; et la "structure/class C++" Fraction (qui a un comportement/service "simplification" en plus des données).



    Citation Envoyé par Laurent_B_ Voir le message
    Voulez-vous des schéma graphiques plus "propres" pour vous aider dans la compréhension de l'arborescence de fichier ?
    Ok ! Oui !!!
    Je vous fournis un schéma de classe avec le formalisme UML (fait avec de lointain souvenirs, si des personnes peuvent me corriger ce schéma SVP)
    Nom : developpez8.png
Affichages : 65
Taille : 25,9 Ko
    Si vous avez lu des livres sur la POO, ils ont dû aborder les notations UML.
    Je ne trouve pas cela forcément beaucoup plus clair, mais c'est normé et ça fait "plus propre" (moins bricolé).
    Si c'est moins lisible pour vous, on fera avec un formalisme moins "standardisé".
    Mais vous devriez poser des questions aussi, SVP.


    Citation Envoyé par Laurent_B_ Voir le message
    Avez-vous "compris" la correction de la fonction "Serie::Serie(std::filesystem::path racine)" que j'ai proposé dans mon précédent post.
    Comment faire
    Je vous donne un nouveau code qui fonctionne mieux dans mes post.
    Vous n'avez qu'à voir les différences avec le vôtre, comprendre pourquoi celui que je fournis fonctionne mieux que celui d'avant.
    Si vous ne comprenez pas pourquoi j'ai fait ces corrections, essayez, avec le débugueur de voir les différences de comportement des 2 codes (le vôtre, et celui que je fourni).


    Citation Envoyé par Laurent_B_ Voir le message
    "compris"
    et
    "précédent post"
    Avant ou plus tard ?

    Merci
    Bin là où j'ai posté le code de la fonction "Serie::Serie(std::filesystem::path racine)".
    post du : 24/07/2024, 20h04

    Je suis dans le brouillard au niveau de votre niveau de compréhension.

    Comprenez-vous maintenant l'architecture générale en 3 étapes du programme ?
    Avez-vous compris le mécanisme de création de l'arborescence d'objets construire dans la 2ème étape du programme ?
    Qu'est-ce qui vous empêche actuellement de mieux maitriser le programme ?
    Si c'est des lignes de code qui ne sont pas claires pour vous, donnez-nous les premières de celles-ci.

  9. #809
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    538
    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 : 538
    Points : 0
    Points
    0
    Par défaut
    De ce que j'ai survolé, une utilisation C++ d'une structure est faite ici :
    https://zestedesavoir.com/tutoriels/...ien-serviables
    Dans la structure "Fraction" qui y est présentée, on commence à y insérer des comportements ( par exemple : "simplification()") , pas juste des données ("numerateur" ou "denominateur").

    C'est cette différence que je cherche à vous montrer.
    Est-ce que vous comprenez maintenant cette différence entre une "structure à la C" et une "structure/class C++" ?
    Pas fini !!!

    Mais :
    https://github.com/laurentbouleau/Exemple : Juillet 21 (27/07/2024)

  10. #810
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 148
    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 148
    Points : 12 256
    Points
    12 256
    Par défaut
    Vous continuez à ajouter des fonctionnalités (comme l'affichage des durées) sans avoir appliqué aux moins 70% de nos (mes) remarques.
    Vous n'allez jamais stabiliser votre programme en continuant comme ça.
    Maitrisez les concepts avant de vous en servir (mal) ailleurs.

    Votre code devrait fonctionner sans problèmes majeurs avant d'en ajouter. Sinon, vous vous prendrez la tête sur de "faux" problèmes pendant des heures, pour pondre du mauvais code, encore et encore.

    Quasiment tous les nouveaux codes sont bancals car concepts encore mal maitrisés ou non prise en compte de nos remarques.

    Par exemple :
    Dans le constructeur d'InfosVisionnage, à la fin:
    Vous avez remplacé
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_content.erase(file_content.begin(), file_content.begin() + 0);
    Par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_content.erase(file_content.begin(), file_content.begin() + 1);
    Mais vous n'avez pas testé ou mal compris le résultat de l'exécution.

    https://cplusplus.com/reference/vector/vector/erase/
    La documentation indique bien que l'élément "pointé" par le second paramètre ne sera supprimé.
    C'est donc le code suivant qu'i faut utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    file_content.erase(file_content.begin(), file_content.begin() + 2);
    Testez toujours le code que vous modifiez.
    (Mais c'est bien que vous ayez pris un peu de temps pour nettoyer le code un peu sale que j'avais fourni)

    Dans la fonction "void SequenceVisionnage::Une_Fonction_De_La_Classe_SequenceVisionnage(...)" :
    Vous avez mis en commentaire la seule ligne qui avait un sens :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //auto NumeroSequenceVisionnage = m_episode.GetNumeroSequenceVisionnage(*this); // ??? #804
    La fonction "void SequenceVisionnage::Une_Fonction_De_La_Classe_SequenceVisionnage(...)" n'a pas de sens en elle même.

    J'avais donné un nom de fonction comme celui-ci pour indiquer n'importe quelle fonction de la classe, pas pour en créer une avec ce nom en particulier.
    C'est la même logique pour les paramètres "...", c'était pour ne pas donner une liste de paramètres en particulier.
    Vous ne devriez jamais utiliser ce type de liste de paramètres, car "..." a un sens très précis qui n'a rien a voir avec ce que vous semblez penser.
    Désolé pour les noms de fonction "Une_Fonction_De_La_Classe_xxx", les listes de paramètres "..." ou encore les champs "lInfoQuiMInteresse", c'était pour illustrer mon propos avec des noms "génériques", pas à prendre "au pied de la lettre".

    Pour la fonction "void Episode::GetNumeroSequenceVisionnage(const SequenceVisionnage& sev_vis)", le type de la valeur de retour de la fonction : "void", n'est pas cohérent avec l'utilité de la fonction : "GetNumeroXXX", c'est pour récupérer un numéro, pas "rien".
    Mais comme déjà indiqué, je ne suis pas sûr que la fonction "Episode::GetNumeroSequenceVisionnage(const SequenceVisionnage& sev_vis)" est un intérêt. (cf. les fonctions "PrintFirstSequenceVisionnage" et "PrintSequenceVisionnage" de la classe Episode)
    Implémenter "correctement" cette fonction demanderait une bonne maitrise des arcanes du C++.

    Stabilisez votre code existant avant de vouloir en ajouter.

    Pour la fonction "void Film::initialiser_Duree(std::wstring& m)", l'expression régulière "([01234])?" est très insuffisante pour des valeurs comme "2h 42min" dans "Avatar.(2009-12-16)\Titre.txt".
    https://regex101.com/r/Cjhee3/1
    Vous ne capturez que le premier "2".
    Il faut juste un peu de méthode.
    Le format de la durée est composé de 2 parties optionnelles.
    - Le nombre d'heures
    - Le nombre de minutes "restantes"
    Ces 2 parties peuvent être séparées par un espace.
    On va donc avoir 2 parties distinctes dans l'expression régulière.

    La première partie, c'est le nombre d'heure, donc un ou plusieurs chiffres suivis d'un "h" : \d+h
    On veut récupérer/capturer justes les chiffres, donc on ajoute des parenthèses autour de "\d+" : (\d+)h
    Il se peut que cela doit un "H" et pas un "h", alors il faut faire une alternative entre "h" et "H" : (\d+)(h|H)
    (il y a la possibilité de rendre l'expression régulière "case insensitive" mais pour un point de vue pédagogique, on ne l'utilise pas ici.)
    Comme on ne veut pas savoir si c'est un "h" ou un "H", on ajoute un "?:" au début du contenu de la seconde pair de parenthèse : (\d+)(?:h|H)

    La seconde partie, c'est le nombre de minutes, donc un ou plusieurs chiffres suivis d'un "min" : \d+min
    En appliquant le même raisonnement que pour la partie heure, on obtient : (\d+)(?:min|MIN)

    Si on veut récupérer les 2 parties d'un coup, quand elles sont séparées par un espace, on les écrit cote à cote, en spécifiant le séparateur entre, ici "\s" pour l'espace : (\d+)(?:h|H)\s(\d+)(?:min|MIN)
    Comme l'espace qui sépare les 2 parties n'est pas obligatoire, on va le rendre optionnel dans l'expression régulière : (\d+)(?:h|H)\s?(\d+)(?:min|MIN)

    Comme la première partie n'est pas obligatoire, on va l'encapsulé dans une "capture" optionnelle : (?:(\d+)(?:h|H))?\s?(\d+)(?:min|MIN)

    Idem pour la seconde partie qui n'est pas obligatoire : (?\d+)(?:h|H))?\s?(?:(\d+)(?:min|MIN))?

    A la fin :
    (?\d+)(?:h|H))?\s?(?\d+)(?:min|MIN))?
    On aura donc le nombre d'heures dans la capture "1" et le nombre de minutes dans la capture "2". (La capture "0" contient toute la chaine analysée)

    En ajoutant un "^" au début et un "$" à la fin pour respectivement correspondre à un début de ligne et à une fin de ligne, ça donne cela dans l'évaluateur en ligne :
    https://regex101.com/r/sXgN87/1

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

    https://github.com/laurentbouleau/Exemple : Juillet 22 (28/07/2024)

    De ce que j'ai survolé, une utilisation C++ d'une structure est faite ici :
    https://zestedesavoir.com/tutoriels/...ien-serviables
    Dans la structure "Fraction" qui y est présentée, on commence à y insérer des comportements ( par exemple : "simplification()") , pas juste des données ("numerateur" ou "denominateur").

    C'est cette différence que je cherche à vous montrer.
    Est-ce que vous comprenez maintenant cette différence entre une "structure à la C" et une "structure/class C++" ?
    Pas fini !!! Cercle !!!

    Mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if (affichage_duree_actif)
            {
                duree_str = L' ' + std::to_wstring(m_duree / (60 * 60)) + keyColor[0] + L"h" + valuesColor + L' ' + std::to_wstring(m_duree / 60) + keyColor[0] + L"min " + valuesColor;
            }
    Pourquoi ?

    ---------------
    Dans la fonction "void SequenceVisionnage::Une_Fonction_De_La_Classe_SequenceVisionnage(...)" :
    Vous avez mis en commentaire la seule ligne qui avait un sens :
    ...
    La fonction "void SequenceVisionnage::Une_Fonction_De_La_Classe_SequenceVisionnage(...)" n'a pas de sens en elle même.

    J'avais donné un nom de fonction comme celui-ci pour indiquer n'importe quelle fonction de la classe, pas pour en créer une avec ce nom en particulier.
    C'est la même logique pour les paramètres "...", c'était pour ne pas donner une liste de paramètres en particulier.
    Vous ne devriez jamais utiliser ce type de liste de paramètres, car "..." a un sens très précis qui n'a rien a voir avec ce que vous semblez penser.
    Désolé pour les noms de fonction "Une_Fonction_De_La_Classe_xxx", les listes de paramètres "..." ou encore les champs "lInfoQuiMInteresse", c'était pour illustrer mon propos avec des noms "génériques", pas à prendre "au pied de la lettre".

    Pour la fonction "void Episode::GetNumeroSequenceVisionnage(const SequenceVisionnage& sev_vis)", le type de la valeur de retour de la fonction : "void", n'est pas cohérent avec l'utilité de la fonction : "GetNumeroXXX", c'est pour récupérer un numéro, pas "rien".
    Mais comme déjà indiqué, je ne suis pas sûr que la fonction "Episode::GetNumeroSequenceVisionnage(const SequenceVisionnage& sev_vis)" est un intérêt. (cf. les fonctions "PrintFirstSequenceVisionnage" et "PrintSequenceVisionnage" de la classe Episode)
    Implémenter "correctement" cette fonction demanderait une bonne maitrise des arcanes du C++.

    Stabilisez votre code existant avant de vouloir en ajouter.
    Ça ne fonctionne pas ! Pourquoi ?

    Et :
    Prey.(2022-08-05 Disney+)
    Ok !

    Se reposer !!!

  12. #812
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 148
    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 148
    Points : 12 256
    Points
    12 256
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if (affichage_duree_actif)
            {
                duree_str = L' ' + std::to_wstring(m_duree / (60 * 60)) + keyColor[0] + L"h" + valuesColor + L' ' + std::to_wstring(m_duree / 60) + keyColor[0] + L"min " + valuesColor;
            }
    Vous posez des questions toujours sur le "nouveau" code sans prendre la peine de corriger l'ancien, on arrivera à rien comme ça.
    Ici, vous avez oublié de soustraire le nombre de minutes déjà compté dans les heures.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    duree_str = L' ' + std::to_wstring(m_duree / (60 * 60)) + keyColor[0] + L"h" + valuesColor + L' ' + std::to_wstring((m_duree -((m_duree / (60 * 60))*60*60))/ 60) + keyColor[0] + L"min " + valuesColor;
    Pas fini !!! Cercle !!!
    Quel rapport avec les concepts de base du C++ ???

    Ça ne fonctionne pas ! Pourquoi ?
    Pourquoi voulez-vous que cela marche, si vous ne nous écoutez pas et continuez à pondre du code sans corriger l'existant ?

    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
    void Film::initialiser_Duree(std::wstring& m)
    {
        const std::wregex duree_format_rg{ L"^(?:(\\d+)(?:h|H))?\\s?(?:(\\d+)(?:min|MIN))?$" };
        std::wsmatch match;
    
        if (std::regex_match(m, match, duree_format_rg))
        {
            auto duree_en_heure = std::stoi(match[1]);
            auto duree_en_minute = std::stoi(match[2]);
            m_duree = duree_en_heure * 60 * 60 + duree_en_minute * 60;
        }
        else
        {
            throw std::invalid_argument("'" + std::string{ m.begin(),m.end() } + "' n'est pas un format de durée valide.");
        }
    
    }
    Attention, les parties sont optionnelles!!!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    m_duree = (match[1].matched ? std::stoi(match[1]) : 0) * 60 * 60 + (match[2].matched ? std::stoi(match[2]) : 0) * 60;

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

    https://github.com/laurentbouleau/Exemple : Juillet 23 (29/07/2024)

    Attention : Film : Je sais faire, tout seul !!! (Enfin, peux être !!!).

    https://zestedesavoir.com/tutoriels/...ien-serviables
    const noexcept, noexcept et return distance(cercle.centre, point) <= cercle.rayon;
    Et :
    https://zestedesavoir.com/tutoriels/...ruire-tout-ca/
    m_, default, delete

    Merci

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

  15. #815
    Nouveau Candidat au Club Avatar de Laurent_B_
    Homme Profil pro
    Ingénieur de déploiement réseaux
    Inscrit en
    Avril 2021
    Messages
    538
    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 : 538
    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
    void SequenceVisionnage::Une_Fonction_De_La_Classe_SequenceVisionnage(...)
    {
    
        auto uneInfoDeLEpisode = m_episode.lInfoQuiMInteresse;
        auto uneInfoDeLaSaison = m_episode.m_saison.lInfoQuiMInteresse;
        auto uneInfoDeLaSerie = m_episode.m_saison.m_serie.lInfoQuiMInteresse;
    
        auto NumeroSequenceVisionnage = m_episode.GetNumeroSequenceVisionnage(*this); // ??? #804
    }

    Comme faire ???
    GetNumeroSequenceVisionnage(*this)
    Pas compris !!!



    Merci

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

    Pas dormir !!!

    https://github.com/laurentbouleau/Exemple : Juillet 24 (30/07/2024)

    Je ai marre !!!

    Merci

+ Répondre à la discussion
Cette discussion est résolue.
Page 41 sur 41 PremièrePremière ... 313738394041

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