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++/CLI Discussion :

Virtual C++ 6.0


Sujet :

C++/CLI

  1. #1
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 7
    Par défaut Virtual C++ 6.0
    Bonjour, je suis actuellement en BTS IG et j'ai un petit souci dans mon code qui doit charger un tableau à partir d'un fichier. Je le link.

    Ma déclaration
    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
     
    #include <iostream.h> // J'inclue 
    #include "stdafx.h"
    #include "Procedurale_gestion_voiture_VC.h"
    #include "Procedurale_gestion_voiture_VCDlg.h"
    #include <fstream.h>
     
    typedef struct   // Structure Svoiture.
    {
        int Numero_voiture;
        char Marques_voiture[10];
        char Modeles_voiture[10];
        int Types_voiture; // 0 pour citadine et 1 pour sportive.
        int Louer_voiture; // 0 pour libre et 1 pour louer.
        int Prix_voiture;
    }SVoiture;
    SVoiture Voiture;
    SVoiture TVoiture[500];
    J'ai penser à appeler ma procédure dans le CDialog::OnInitDialog();

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
     BOOL CProcedurale_gestion_voiture_VCDlg::OnInitDialog()
    {
        CDialog::OnInitDialog();
    SetIcon(m_hIcon, TRUE);		// Set big icon
    SetIcon(m_hIcon, FALSE);		// Set small icon
     
    CProcedurale_gestion_voiture_VCDlg::Cprocedure_charger_tableau_voiture();
    return TRUE;
    Et voici la procédure qui vérifie la présence du fichier et qui charge le tableau si celui ci est présent :

    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
     
    void CProcedurale_gestion_voiture_VCDlg::Cprocedure_charger_tableau_voiture() // Charge le fichier Fvoiture
    {
     
     
     
        ifstream FVoiture ("FVoiture.txt");
    if (! FVoiture) 
    {
        //l'ouverture a échoué 
        MessageBox("Le programme va maintenant s'arreter.", "Fermeture de session...", MB_OK);
    // REPERE 1
    } 
    else
    {
        int I = 1;
        FVoiture >> Voiture.Numero_voiture >> Voiture.Modeles_voiture >> Voiture.Types_voiture >> Voiture.Louer_voiture >> Voiture.Prix_voiture;
    // REPERE 2
        while (FVoiture.eof())
        {
            TVoiture[I].Numero_voiture = Voiture.Numero_voiture;
            strcpy(TVoiture[I].Marques_voiture , Voiture.Marques_voiture); 
    // REPERE 3       
            strcpy(TVoiture[I].Modeles_voiture , Voiture.Modeles_voiture);
            TVoiture[I].Types_voiture = Voiture.Types_voiture;
            TVoiture[I].Louer_voiture = Voiture.Louer_voiture;
            TVoiture[I].Prix_voiture = Voiture.Prix_voiture;
     
            FVoiture >> Voiture.Numero_voiture >> Voiture.Modeles_voiture >> Voiture.Types_voiture >> Voiture.Louer_voiture >> Voiture.Prix_voiture;
            I = I + 1;
        } 
    FVoiture.close();
    REPERE 4
    }
    }
    J'ai donc deux problèmes.

    J'ai ajouter des reperes qui m'ont permis de comprendre se que faisait mon programmes. Je les ai mis sous forme de commentaire pour pas ajouter trop d'information.

    Lorsque que je n'ai pas de fichier à l'emplacement requis, le programme me crée le fichier (Alors qu'il est en Ouvrir.Lecture) atteint les REPERES 2 et 4 sans passer par la boucle Alors qu'il devrait m'afficher l'erreur et le REPERE 1.

    Lorsque je laisse le fichier dans le repertoire source.
    Il plante sur ma boucle While sans fin.

    Je n'arrive pas a comprendre mon/mes erreurs. Si quelqu'un peut m'aider ? Merci.

    Je laisse aussi le fichier FVoiture si ca peut être utile.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    1 peugeot hx 0 1 2000
    2 peugeot hx 1 0 3000

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

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

    Informations forums :
    Inscription : Février 2005
    Messages : 5 488
    Par défaut
    Je n'ai trop cherché la logique dans votre programme.
    Bon nombre de choses me dérangent.

    1 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    #include <iostream.h> // J'inclue 
    #include "stdafx.h"
    Toujours mettre #include "stdafx.h" en premier, toujours, et mettre les includes des en-tête qui ne change jamais dans le fichier "stdafx.h".
    Cela accélère énormément la compilation et vous évitera bien des problèmes qui vous sembleront absconds.

    2 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    typedef struct   // Structure Svoiture.
    {
        int Numero_voiture;
        char Marques_voiture[10];
        char Modeles_voiture[10];
        int Types_voiture; // 0 pour citadine et 1 pour sportive.
        int Louer_voiture; // 0 pour libre et 1 pour louer.
        int Prix_voiture;
    }SVoiture;
    Ca, c'est du C pas beau, utilisez les structs C++

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    struct Svoiture.
    {
        int Numero_voiture;
        char Marques_voiture[10];
        char Modeles_voiture[10];
        int Types_voiture; // 0 pour citadine et 1 pour sportive.
        int Louer_voiture; // 0 pour libre et 1 pour louer.
        int Prix_voiture;
    };
    3 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SVoiture TVoiture[500];
    Beurk, le grand tableau globale, pas dynamique pour un sous.
    Utilisez par exemple sun std::vector qui vous permettra d'avoir une nombre arbitraire d'élément.
    Je ferais de ce vecteur (std::vector) un membre de la classe CProcedurale_gestion_voiture_VCDlg.

    4 -
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BOOL CProcedurale_gestion_voiture_VCDlg::OnInitDialog()
    {
    ...	
    CProcedurale_gestion_voiture_VCDlg::Cprocedure_charger_tableau_voiture();
    ...
    Quand on n'est dans une méthode d'une classe, il ne faut pas utiliser le nom de la classe comme sélecteur de namespace.
    Voici un code bien plus concis, et plus correct en cas de fonction virtuelle.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    BOOL CProcedurale_gestion_voiture_VCDlg::OnInitDialog()
    {
    ...	
             Cprocedure_charger_tableau_voiture();
    ...
    5 -
    Je ne suis pas un adepte des "ifstream". Je préfère les API non portable de Win32.
    Je pense que ce n'est pas votre programme qui créé ce fichier.
    C'est peut-être le processus de compilation ou de lancement du débuggeur.
    Pour maîtriser finement la non création des fichiers, j'utiliserais la fonction "fopen" à la place de "ifstream".

    6 -
    Réservez les majuscules aux constantes et aux MACROS.
    7 -
    8 -
    Le meilleur pour la fin
    Tant que vous êtes en erreur on boucle.
    Google est notre ami à tous :
    http://www.daniweb.com/forums/post155265-18.html

  3. #3
    Membre habitué
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2009
    Messages : 7
    Par défaut
    Merci beaucoup. Bonne continuation.

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

Discussions similaires

  1. virtuals hosts apache
    Par kaiser2003 dans le forum Apache
    Réponses: 5
    Dernier message: 01/08/2004, 17h18
  2. [tomcat]comment cree un "Virtual Host" avec tomcat
    Par nouaman dans le forum Tomcat et TomEE
    Réponses: 17
    Dernier message: 04/06/2004, 22h51
  3. Déclenchement Programme sur Virtual Key
    Par Tom-G dans le forum API, COM et SDKs
    Réponses: 9
    Dernier message: 09/05/2003, 12h58
  4. Virtual-key code
    Par lyrau dans le forum Windows
    Réponses: 2
    Dernier message: 29/03/2003, 19h22
  5. Abstract VS virtual
    Par LE CHAKAL dans le forum Langage
    Réponses: 2
    Dernier message: 29/08/2002, 17h50

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