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 :

comment splitter un tableau?


Sujet :

C#

  1. #1
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut comment splitter un tableau?
    salut ,
    j' ai un programme qui lit un fichier et le met dans un tableau. je voudrais pouvoir mettre les elements de ce fichier sur plusieurs colonnes .
    mais je recois une erreur de "System.indexoutofRangeException"


    voila comment mon fichier se presente:

    100;cv
    200;df
    300; fg
    400;sn sx dg
    500; il df
    600;lk
    700; hj


    je voudrais avoir quelque chose de la sorte

    100 cv
    200 df
    300 fg
    400 sn sx dg
    500 il df
    600 lk
    700 hj


    mon programme reussi a le mettre sur deux colonnes mais pas sur plus de 2 colonnes.

    le voila le programme:



    private void Form1_Load(object sender, System.EventArgs e)
    {


    m_dt = new DataTable("test");

    m_dt.Columns.Add("TelephoneNumber",System.Type.GetType("System.Int32"));
    m_dt.Columns.Add("User1", System.Type.GetType("System.String"));
    m_dt.Columns.Add("User2", System.Type.GetType("System.String"));
    m_dt.Columns.Add("User3", System.Type.GetType("System.String"));
    m_dt.Columns.Add("User4", System.Type.GetType("System.String"));
    StreamReader fichier = File.OpenText(@"h:\\export2.txt");
    while (fichier.Peek() >= 0)
    {

    string ligne = fichier.ReadLine();
    string[] vals = ligne.Split(';', ' ');
    DataRow dr = m_dt.NewRow();


    try
    {
    dr["TelephoneNumber"] = int.Parse(vals[0]);
    dr["User1"] = vals[1];
    dr["User2"] = vals[2];
    dr["USer3"] = vals[3];
    dr["USer4"] = vals[4];
    m_dt.Rows.Add(dr);
    }

    catch (Exception ex)
    {
    Console.WriteLine(ex.GetType().ToString());
    Console.ReadLine();
    }

    }


    dataGrid1.DataSource = m_dt;
    }


    merci de votre aide

  2. #2
    Nouveau membre du Club
    Profil pro
    Inscrit en
    Septembre 2007
    Messages
    27
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2007
    Messages : 27
    Points : 33
    Points
    33
    Par défaut
    Salut,

    si tu as bien recopié ton fichier, ton ligne.Split(';') renverra un tableau à deux entrées, pas 5 ..?

  3. #3
    Membre averti
    Inscrit en
    Octobre 2005
    Messages
    400
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 400
    Points : 444
    Points
    444
    Par défaut
    dr["User1"] = vals[1];
    dr["User2"] = vals[2];
    dr["USer3"] = vals[3];
    dr["USer4"] = vals[4];
    vals ne contient que deux élément ('100' et 'cv')
    tu ne peux pas accéder à vals[2], vals[3] ou vals[4]

  4. #4
    Membre expert
    Avatar de hed62
    Homme Profil pro
    Développeur .NET
    Inscrit en
    Juillet 2007
    Messages
    2 029
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 39
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Santé

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 029
    Points : 3 134
    Points
    3 134
    Par défaut
    vals ne contient que deux élément ('100' et 'cv')
    tu ne peux pas accéder à vals[2], vals[3] ou vals[4]
    Tout à fait d'accord. Il faut d'abord que tu teste la taille du tableau retourné.

    L'erreur "index out of range" te le dit bien : tu accède à un éléément du tableau en dehors de ses bornes.
    En ajoutant un test sur "length" tu t'en sortira.

    Mais je pense que plutôt que de gérer 4 User, tu devrais faire un truc du genre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
     
    T1 = new DataTable("Tel_User");
     
    T1.Columns.Add("TelephoneNumber",System.Type.GetType("System.Int32"));
    T1.Columns.Add("UserId", System.Type.GetType("System.Int32"));
     
    T2 = new DataTable("User");
    T2.Columns.Add("UserId", System.Type.GetType("System.Int32"));
    T2.Columns.Add("UserName",System.Type.GetType("System.String"));
    Puis remplir les deux tables en parcourant le fichier : tu pourras ainsi gérer autant d'utilisateur que voulu.

    P.S. : n'oublie pas de lier les deux tables

  5. #5
    Futur Membre du Club
    Inscrit en
    Août 2007
    Messages
    6
    Détails du profil
    Informations forums :
    Inscription : Août 2007
    Messages : 6
    Points : 7
    Points
    7
    Par défaut
    merci pour l' aide...

    amicalement

    dorine

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

Discussions similaires

  1. Comment passer un tableau dynamique en paramètre ?
    Par Charette dans le forum Langage
    Réponses: 2
    Dernier message: 21/04/2005, 11h28
  2. Comment parcourir un tableau
    Par petitsims dans le forum Général JavaScript
    Réponses: 8
    Dernier message: 27/01/2005, 14h33
  3. [CR] comment faire un tableau croisé
    Par yoyothebest dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 29/08/2004, 18h32
  4. [plpgsql] comment retourner un tableau
    Par hpghost dans le forum PostgreSQL
    Réponses: 3
    Dernier message: 27/06/2004, 21h09
  5. comment creer un tableau "stable"
    Par gaut dans le forum C
    Réponses: 16
    Dernier message: 23/07/2003, 16h20

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