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 :

Lire,ecrire dans un nombre elevé de Tedit grace a une boucle


Sujet :

C++Builder

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 93
    Billets dans le blog
    1
    Par défaut Lire,ecrire dans un nombre elevé de Tedit grace a une boucle
    Bonjour, j'ai une application avec 15 Tedit, et je voudrais lire les edit les un derriere les autres et les mettre dans deux tableaux, pour les calculer puis ecrire dans les Tedit les nouvelles valeurs et ecrire les valeurs initiales du Tedit dans un label
    j'ai
    Label16*label31 car Label1 a 15 pour l'indication du contenu a entrer dans les
    Edit1 a Edit15

    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
     
    //Dédut Du Code,Lecture
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
    atack=0;
    for(int z=1;z<=15;z++)
            {
               TEdit * Edit=NULL;
               Edit =(TEdit*) FindComponent("Edit"+IntToStr(z));
               if(Edit->Text=="")
               {
                     Edit->Text=IntToStr(0);
               }
               b=z;
               a[b]=0;//StrToInt(Edit->Text);/*jai un msg d'erreur a la fermeture pour violation d'acces par le destroy initié a la fermeture du programme*/
               atack2=a[z-1];
               atack=atack+atack2;
            }

  2. #2
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Salut et Bienvenue sur Developpez.com,

    Afin de répondre correctement à ce que tu demandes, il nous faudrait la déclaration de a, attack, attack2, b .

    D'après ce que je comprends, tu veux initialiser les TEdit ayant aucune donnée à zéro, c'est ça ?

    C'est cette ligne là qui ne fonctionne pas ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //StrToInt(Edit->Text);/*jai un msg d'erreur a la fermeture pour violation d'acces par le destroy initié a la fermeture du programme*/
    Je ne comprends pas trop ce que tu veux dire avec l'histoire du destroy ... Peux tu être plus clair stp ?

    Merci

  3. #3
    Membre actif

    Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2007
    Messages
    93
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : France, Oise (Picardie)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Décembre 2007
    Messages : 93
    Billets dans le blog
    1
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    private:
    int i[],j[],a[],b,shield,atack,Shield2,atack2;
    	// Déclarations de l'utilisateur
    Les tedit sont initialisés directement a 0, mais je veux les lire pour eviter de devoir faire 3 fois x lignes et pouvoir initialiser a 0 quand celui -ci est vide ou n'a pas de nombres
    le code fonctionne mais c'est le a[b]= X qui ne marche pas la procedure
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //StrToInt(Edit->Text);/*jai un msg d'erreur a la fermeture pour violation d'acces par le destroy initié a la fermeture du programme*/
    ---------------------------
    Notification d'une exception du débogueur
    ---------------------------
    Le projet LostSimu.exe a provoqué une classe d'exception EAccessViolation avec le message 'Violation d'accès à l'adresse 4000572C. Lecture de l'adresse FFFFFFFC'. Processus stoppé. Utilisez Pas-à-pas ou Exécuter pour continuer.
    ---------------------------
    OK Aide
    ---------------------------
    forms.hpp
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    /* TCustomForm.Destroy */inline __fastcall virtual ~TForm(void) { }

  4. #4
    Rédacteur/Modérateur
    Avatar de ero-sennin
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2005
    Messages
    2 965
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juillet 2005
    Messages : 2 965
    Par défaut
    Re,

    Je ne cerne pas vraiment le soucis (surement trop fatigué ).
    Néanmoins, j'ai fait celà vite fait et chez moi ça compile ...

    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
    void __fastcall TForm1::Timer1Timer(TObject *Sender)
    {
      int atack=0;
      int atack2;
      int a[30];
      for(int z=1;z<=15;z++)
      {
         TEdit * Edit=NULL;
         Edit =(TEdit*) FindComponent("Edit"+IntToStr(z));
         if(Edit->Text=="")
         {
               Edit->Text=IntToStr(0);
         }
         a[z]= StrToInt(Edit->Text);
         atack2=a[z-1];
         atack=atack+atack2;
      }
    }
    L'affectation b=z me semble inutile, je l'ai donc supprimé... et j'ai remplacé a[ b] par a[z]

    Si jamais ça peut t'aider ...
    J'ai défini la taille de mon tableau à 30 ( 15 suffirait ).
    Si c'est de la programmation orienté objet (héritage) je n'y connais pas encore assez ...

    En espérant avoir pu t'éclairer un peu
    A+

  5. #5
    Membre Expert
    Avatar de Gilles Louïse
    Profil pro
    Inscrit en
    Mars 2002
    Messages
    421
    Détails du profil
    Informations personnelles :
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Mars 2002
    Messages : 421
    Par défaut
    En principe, on passe par un tableau de pointeurs vers des TEdit.

    Le mieux est de les construire dynamiquement par exemple au moment du OnShow.

    Vous déclarez une constante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    const int ci_NbTEdit=15;
    Vous déclarez votre tableau de pointeurs dans la classe principale.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TEdit* TabEd[ci_NbTEdit];
    Au moment du OnShow, vous construisez vos TEdit et mettez les adresses dans le tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    int i,x,y;
    TEdit *e;
     
    x=10;
    y=10;
    for(i=0;i<ci_NbTEdit;i++)
       {
       e=new TEdit(Application);
       TabEd[i]=e;
       e->Parent=Form1;
       e->Left=x;
       e->Top=y;
       y+=25;
       }
    À partir de là, vos TEdit sont accessibles par une syntaxe du type TabEd[n]->Text.

    Sinon, si vous ne voulez pas les construire dynamiquement, libre à vous au moment du OnShow toujours, de mettre les adresses dans un tableau.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    TabEd[0]=Edit1;
    TabEd[1]=Edit2;
    TabEd[2]=Edit3; etc..
    C’est un peu bourrin mais vous avez votre tableau, ce qui vous évite de rechercher les composants dans la forme.

    La première solution est meilleure, d’une part, le nombre de TEdit peut être très grand, d’autre part, en ne changeant que la constante, on en modifie facilement le nombre.

    À bientôt
    Gilles

Discussions similaires

  1. lire/ecrire dans un fichier .mat avec C++
    Par WELCOMSMAIL dans le forum C++
    Réponses: 6
    Dernier message: 11/09/2007, 13h19
  2. Lire/Ecrire dans un fichier en PL/pgSQL
    Par Davboc dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 02/04/2007, 16h17
  3. lire/ecrire dans un fichier texte
    Par mello dans le forum Entrée/Sortie
    Réponses: 9
    Dernier message: 13/06/2006, 12h35
  4. Lire/Ecrire dans un fichier .xml depuis Java
    Par SkyBioSS dans le forum Format d'échange (XML, JSON...)
    Réponses: 13
    Dernier message: 16/05/2006, 17h38
  5. [C#] Comment lire/ecrire dans fichier ini ?
    Par meli0207 dans le forum C#
    Réponses: 2
    Dernier message: 20/03/2006, 16h53

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