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++Builder Discussion :

OpenDialog s'execute qu'une ou 2 fois


Sujet :

C++Builder

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut OpenDialog s'execute qu'une ou 2 fois
    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
    #define TableActive ((TFFilleMDI*)ActiveMDIChild)->StringGrid
    //=====
    AnsiString fichier;
      char* file;
      char buff[100];
      AnsiString col,row,NomFichier;
      int NbrCol,NbrRow;
      OpenDialog->FileName="";
      if (OpenDialog->Execute())
         {
          fichier=OpenDialog->FileName;
          file=fichier.c_str();
          ifstream infile(file);
          if(!infile)return;
          infile.getline(buff,sizeof(buff));
          NomFichier=buff;
          infile.getline(buff,sizeof(buff));//lire le nombre de colonnes
          col=buff;
          NbrCol=StrToInt(col);
          infile.getline(buff,sizeof(buff));//lire le nombre de lignes
          row=buff;
          NbrRow=StrToInt(row);
          TFFilleMDI *Fen;
          Fen=new TFFilleMDI(this);
          Fen->Caption=NomFichier;
          Fen->save=true;
          TableActive->ColCount=NbrCol;
          TableActive->RowCount=NbrRow;
          for(int i=1;i<TableActive->ColCount;i++)
                  for(int j=0;j<TableActive->RowCount;j++)
                      {
                       infile.getline(buff,sizeof(buff));
                       TableActive->Cells[i][j]=buff;
                      }
          infile.close();
    }
    voila le code de buton ouvrir (Fichier->Ouvrir)
    je travail sur une application MDI et le boton open me permet d'ouvrir un fichier ds un StringGrid de la fenetre fille
    le probleme c'est que je peut qu'ouvrir 1 ou (je dit bien ou) 2 fichier et quand j'essye d'ouvrir un 3eme fichier l'application se ferme (elle exeute Close()) tout seul

  2. #2
    Expert confirmé

    Avatar de pottiez
    Homme Profil pro
    Développeur C++
    Inscrit en
    Novembre 2005
    Messages
    7 152
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur C++
    Secteur : Industrie

    Informations forums :
    Inscription : Novembre 2005
    Messages : 7 152
    Par défaut
    C'est bizard comme comportement, peut tu nous dire dans quel fonction tu met ce code, je suppose que c'est dans l'événement OnClick du bouton ouvrir,
    sinon essaye de mettre un point d'arrêt au début de ce code et de voir ce qui se passe en pas à pas, il y a forcement un moment ou il passe dans une commande ou il ne devrait pas, ou bien une commande qui fait planté l'appli et du coup windows la fermerais.

  3. #3
    Membre Expert

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    1 407
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 1 407
    Par défaut
    Salut !

    Dans un premier temps,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    file=fichier.c_str();
    ifstream infile(file);
    Ca semble correct mais hélàs... le tableau renvoyé par c_str() est temporaire (enfin... c'est ce que l'on m'a toujours dit) !!!
    La bonne méthode est celle-ci (pour être sûr que tout se passe bien) :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    ifstream infile(fichier.c_str());
    Je ne sais pas si ça va résoudre le problème...

    A plus !

  4. #4
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    Slt,
    je pense que le probleme est dans l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    if(OpenDialog->Execute())
    car lors de l'ouverture du 1er et le 2eme fichier(fiches filles de l'application MDI) il y a pas de probleme mais juste aprés l'affichage de la boite de dialogue de l'ouverture de la 3eme fiche(aprés le clique sur le Bouton Ouvrir -ctrl+o-) et bien avant la validation (le clique sur le Bouton OK de la Boite OpenDialog)l'application se ferme automatiquement.
    Merci.

  5. #5
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 11
    Par défaut
    J'ai éxécuter le programe pas a pas :
    a) Le probleme et dans l'instruction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
                                 if(OpenDialog->Execute())
    b) Et g eux le message d'information suivant:

    Project C:\Documents and Settings\...\RLM.exe faulted whith message : =
    'access violation at 0x7ca5e045: read of address 0x01fea80c'.
    Process
    Stopped. Use Step or Run Continue

    et c pas la seul instruction qui me pose se probleme !!
    comment je peut reglé ce probleme??!!!
    Merci !! ;-)

Discussions similaires

  1. Ma requete s'execute qu'une seule fois dans mon curseur
    Par remyescof dans le forum Développement
    Réponses: 5
    Dernier message: 21/03/2008, 09h03
  2. Ma requete s'execute qu'une seule fois dans mon curseur
    Par remyescof dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 21/03/2008, 09h03
  3. empêcher l'execution d'une macro plus d'une fois
    Par ouioui_cmoi dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 04/03/2008, 18h10
  4. Mon callback de dessinae ne s'execute qu'une seul fois
    Par pepsidrinker dans le forum GLUT
    Réponses: 4
    Dernier message: 22/11/2007, 16h46
  5. Réponses: 2
    Dernier message: 16/09/2005, 18h03

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