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. #861
    Expert éminent sénior
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Février 2005
    Messages
    5 160
    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 160
    Points : 12 275
    Points
    12 275
    Par défaut
    Remarques sur la version "Août 26 (29/08/2024)":
    Vous n'avez toujours pas compris à quoi servent les fichiers d'en-tête (.h).
    Ce n'est pas un dépotoir où on ajoute tout un bordel pour que le .cpp compile.
    C'est un endroit où on déclare ce qui sera implémenté/défini dans le .cpp.

    Cas pratique :
    Vous avez transféré de film.cpp à film.h tout un bordel de déclaration qui n'ont rien à voir avec film.cpp.
    Par exemple la déclaration de la fonction "test_date_tiret_sp_etc(wchar_t d)".
    Cette fonction n'est pas définie dans film.cpp mais dans utils.cpp.
    Cette déclaration ne doit pas être "transféré" dans film.h mais dans utils.h.
    Et vous devez ajouter un '#include "utils.h"' dans film.cpp pour que le code dans ce fichier ( film.cpp) puisse utiliser les fonctions qui ont été déclarées dans utils.h et implémenté dans utils.cpp.
    Appliquez le même résonnement pour chaque fonction du merdier que vous baladez de fichier .cpp en fichier .h qui ne correspondent pas à :
    "Je déclare les fonctions dans un fichier XXX.h QUE les fonctions qui sont implémentées dans XXX.cpp"
    (il y a des exceptions au mantra précédent, mais vous n'êtes clairement pas dans ces cas d'exception)

    Remarques :
    - Un fichier XXX.cpp qui n'inclus pas le fichier XXX.h, c'est très suspect.
    - Un fichierXXX.h n'inclus que les fichiers nécéssaires à la compréhension, par le compilateur, des déclarations du fichier XXX.h, et pas les fichiers nécessaira à la compilation du fichier XXX.cpp.
    => Il doit avoir beaucoup moins de #include dans les fichiers d'en-tête (.h) que dans les fichiers .cpp.

    Mais :
    Donc : abc.[2008] ou abc.[2008-] ou abc.[2008-2010]
    Exemple :
    Titre : Andor [2022-] (sur Disney : 12+) 45min 4,2/5
    et pas :
    Titre : Andor [2022] (sur Disney : 12+) 45min 4,2/5
    Ok !
    Le "!", c'est que vous avez compris pourquoi votre code ne fonctionne pas et que mes propositions fonctionnent, ou est-ce que vous êtes toujours dans le brouillard ?

    Je reposte le code de m'a réponse du "28/08/2024, 23h05" :
    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
    std::wstring Serie::format_Annees() const
    {
        if (m_f_anneesProduction.first && m_f_anneesProduction.second)
        {
            return m_keyColor[0] + L" [" + m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(m_f_anneesProduction.second.value()) + m_keyColor[0] + L']' + m_valuesColor;
        }
        else if (m_f_anneesProduction.first)
        {
            return m_keyColor[0] + L" [" + m_valuesColor + std::to_wstring(m_f_anneesProduction.first.value()) + m_keyColor[1] + L'-' + m_keyColor[0] + L']' + m_valuesColor;
        }
        else
        {
            std::pair<int, int> anneesDiffusion = calculer_Annees_Diffusion();
            return m_keyColor[0] + L" [" + m_valuesColor + std::to_wstring(anneesDiffusion.first) + m_keyColor[1] + L'-' + m_valuesColor + std::to_wstring(anneesDiffusion.second) + m_keyColor[0] + L']' + m_valuesColor;
        }
    }
    (J'ai déjà expliqué l'algorithme implémenté dans cette fonction dans ma précédente réponse)

    et :
    Star Wars : Episode VII - Le réveil de la force
    et pas :
    Star Wars - Episode VII - Le réveil de la force
    Voilà !!!}
    Pouvez-vous être plus précis, SVP ?
    Dans le dépôt GuiHub, il n'y a que "Star Wars - Episode VII - Le réveil de la force" en noms de fichier.

    Il y a "Star Wars: Episode VII - The Force Awakens" dans le fichier ".\Star Wars - Episode VII - Le réveil de la force.(2015-12-16)\Titre original.txt" et la fonction "initialiser_Titre_Original" fait très "bien le boulot" de découpage.

    Donc, c'est quoi le problème ???


    Remarques sur la version "Août 27 (30/08/2024)":
    Toujours les mêmes bêtises sur l'utilité des fichiers d'en-têtes.

    Mais : (fim.cpp)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
            if (nomFichier == L"Making-of.txt")
            {
                <s>////</s>initialiser_Making_of(cheminFichier);
            }
    Marches pas !!!
    Je ne vois pas où est la difficulté ?
    Pouvez-vous être plus précis, SVP ?

    Votre code :
    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_Making_of(std::filesystem::path const& cheminFichier)
    {
        auto nomFichier = cheminFichier.wstring();
        assert(nomFichier.length() > 0 && L"Nom de fichier vide");
        std::vector<std::wstring> contenu = lire_fichierTxt(cheminFichier.wstring(), { L"\n" });
        assert((contenu.size() != 0));
        if (contenu.size() > 0)
        {
            m_making_of_duree = initialiser_Duree(contenu[0]);
            contenu.erase(contenu.begin());
            if (contenu.size() > 0)
            {
                m_making_of_resume = contenu;
                m_making_of = true;
            }
        }
    }
    Le compilateur gueule parce qu'il ne connait pas la fonction "initialiser_Duree".
    Et c'est normal, car on a correctement renommé et refactoré cette fonction pour qu'elle soit plus générique en "extraire_Duree_DepuisUneLigneDUnFichier".

    Résultat :
    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_Making_of(std::filesystem::path const& cheminFichier)
    {
        auto nomFichier = cheminFichier.wstring();
        assert(nomFichier.length() > 0 && L"Nom de fichier vide");
        std::vector<std::wstring> contenu = lire_fichierTxt(cheminFichier.wstring(), { L"\n" });
        assert((contenu.size() != 0));
        if (contenu.size() > 0)
        {
            m_making_of_duree = extraire_Duree_DepuisUneLigneDUnFichier(contenu[0]).value();
            contenu.erase(contenu.begin());
            if (contenu.size() > 0)
            {
                m_making_of_resume = contenu;
                m_making_of = true;
            }
        }
    }
    Et la signature de la fonction "extraire_Duree_DepuisUneLigneDUnFichier" vous incite à utiliser un "std::optional<long>" plutôt qu'un simple long.
    Ce qui serait un bien meilleur type pour le "champ m_making_of_duree".
    Une "bonne" conception : Rendre facile les bonnes utilisations et difficiles les mauvaises utilisations. (ici, être obligé d'utiliser la fonction "value")

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

    https://github.com/laurentbouleau/Exemple : Août 27 (30/08/2024)
    Je suis crevé !

    Remarques :
    - Un fichier XXX.cpp qui n'inclus pas le fichier XXX.h, c'est très suspect.
    - Un fichierXXX.h n'inclus que les fichiers nécéssaires à la compréhension, par le compilateur, des déclarations du fichier XXX.h, et pas les fichiers nécessaira à la compilation du fichier XXX.cpp.
    => Il doit avoir beaucoup moins de #include dans les fichiers d'en-tête (.h) que dans les fichiers .cpp.
    Ok ou pas !

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    void Film::initialiser_Making_of(std::filesystem::path const& cheminFichier)
    {
        auto nomFichier = cheminFichier.wstring();
        assert(nomFichier.length() > 0 && L"Nom de fichier vide");
        std::vector<std::wstring> contenu = lire_fichierTxt(cheminFichier.wstring(), { L"\n" });
        assert((contenu.size() != 0));
        if (contenu.size() > 0)
        {
            m_making_of_duree = extraire_Duree_DepuisUneLigneDUnFichier(contenu[0]).value();
            contenu.erase(contenu.begin());
            if (contenu.size() > 0)
            {
                m_making_of_resume = contenu;
                m_making_of = true;
            }
        }
    }
    Ok !

    Mais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    void Film::initialiser_Fichier(fs::path const& cheminFichier)
    {
    ...
            // xxxx-yy-zz
            //if (nomFichier != L"")
            if (std::regex_match(nomFichier, std::wregex{ L"([[:digit:]])(.+)" }))
            {
                std::wcout << L"{[" << cheminFichier << L"]}" << std::endl;
            }
    ...
    Fatigué !

    Merci

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

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