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 :

Déclaration AnsiString** - Importation Csv


Sujet :

C++Builder

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2003
    Messages
    46
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2003
    Messages : 46
    Par défaut Déclaration AnsiString** - Importation Csv
    Bonjour,

    Je souhaite faire un tableau d'AnsiString 2D afin d'y transférer tous les enregistrement contenu dans un fichier CSV. la méthode est que j'utilise une fonction nommée split() afin de récupérer le nombre de colonne (PtrInt) ainsi que le contenu à chaque ligne et ensuite je dois renseigner mon tableau d'AnsiString TabAnsi que j'essaie préalablement de réallouer de la mémoire en dynamique mais j'ai des erreurs de violations lorsque j'essaie de le remplir.

    Voici mon 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
    DonneesCsv=new TStringList();
    DonneesCsv->LoadFromFile(Chemin);
     
    for (int i = 0; i < DonneesCsv->Count; i++)
    {
    	Donnees= (char**) malloc(sizeof(split(DonneesCsv->Strings[i].c_str(),",",1,&PtrInt)));
    	Donnees= split(DonneesCsv->Strings[i].c_str(),",",0,&PtrInt);
    	TabAnsi=(AnsiString**) malloc((DonneesCsv->Count+1)*PtrInt);
     
    	for (int j=0; j < PtrInt; j++)
    		{
    		TabAnsi[i+1][j+1]=Donnees[j];
    		}
    }
    Alors si vous savez d'où viennent mes erreurs ou si encore mieux vous savez comment faire autrement pour récupérer ces valeurs du CSV (comme si on faisait une importation sous Excel) colonne par colonne et ligne par ligne, car mon but c'est de faire un ou plusieurs Chart avec ces valeurs.

    Je vous remercie d'avance.


  2. #2
    Membre éclairé Avatar de kurul1
    Profil pro
    Inscrit en
    Janvier 2005
    Messages
    934
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2005
    Messages : 934
    Par défaut
    Quel est la structure de ton Fichier Csv ?

  3. #3
    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
    Si vous avez besoin d'AnsiString, utilisez des AnsiString, un tableau d'AnsiString en deux dimensions est parfaitement possible. Voici un exemple qui vous donne les syntaxes et la preuve que ça marche.

    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
    int x=5,y=3;//dimensions pour essayer
    int i,j;
    AnsiString **TabA;
    AnsiString A;
     
    TabA=new AnsiString*[x];
    for(i=0;i<x;i++) TabA[i]=new AnsiString[y];
     
    // on remplit le tableau pour preuve
    for(i=0;i<x;i++)
       for(j=0;j<y;j++)
          TabA[i][j]="case "+IntToStr(i)+" "+IntToStr(j)+". ";
     
    // On l'affiche ligne par ligne pour preuve
    for(i=0;i<x;i++)
       {
       A="";
       for(j=0;j<y;j++) A+=TabA[i][j];
       ShowMessage(A);
       }
     
    for(i=0;i<y;i++) delete[] TabA;
    delete TabA;
    À bientôt
    Gilles

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Mars 2004
    Messages
    12
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France

    Informations forums :
    Inscription : Mars 2004
    Messages : 12
    Par défaut
    bonjour, moi j'utilise ce code pour me permettre d'afficher une liste de contact que je récupère en csv.
    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
    this->Liste_Fichier = new TStringList();
    this->Liste_Fichier->LoadFromFile("Contacts.csv");
    I=0;
    Ligne=Liste_Fichier->Strings[I];
    this->StringGrid_Annuaire->Cells[0][I] = Ligne.SubString(0,Ligne.Pos(",")-1) ;
    this->StringGrid_Annuaire->Cells[1][I] = Ligne.SubString(Ligne.Pos(",")+1,Ligne.LastDelimiter(",")-Ligne.Pos(",")-1) ;
    this->StringGrid_Annuaire->Cells[2][I] = Ligne.SubString(Ligne.LastDelimiter(",")+1,Ligne.Length()) ;
    Liste_Fichier->Delete(I);
    Liste_Fichier->Sort();
    TRect R;// = Rect;
    for(I=0;I<Liste_Fichier->Count;I++) {
    	if(I>0) this->StringGrid_Annuaire->RowCount++;
    	Ligne=Liste_Fichier->Strings[I];
    	this->StringGrid_Annuaire->Cells[0][I+1] = Ligne.SubString(0,Ligne.Pos(",")-1) ;
    	this->StringGrid_Annuaire->Cells[1][I+1] = Ligne.SubString(Ligne.Pos(",")+1,Ligne.LastDelimiter(",")-Ligne.Pos(",")-1) ;
    	this->StringGrid_Annuaire->Cells[2][I+1] = Ligne.SubString(Ligne.LastDelimiter(",")+1,Ligne.Length()) ;
    	for(J=0;J<26;J++)
    		if(((TButton * )this->Button_Tri_Annuaire->Items[J])->Caption==Ligne.SubString(0,1))
    			((TButton * )this->Button_Tri_Annuaire->Items[J])->Enabled=true;
    	}
    si cela peut te servir
    bon courage

    Guillaume

Discussions similaires

  1. Import CSV sous Excel, garder les 0 inutile
    Par ePoX dans le forum Excel
    Réponses: 4
    Dernier message: 26/01/2009, 16h25
  2. [ACCESS 2003] - Importation *.csv
    Par guiguikawa dans le forum Access
    Réponses: 3
    Dernier message: 29/06/2006, 16h19
  3. Importer CSV dans MySQL
    Par The_freeman dans le forum Administration
    Réponses: 6
    Dernier message: 14/02/2006, 22h18
  4. import csv décimale
    Par gIch dans le forum MS SQL Server
    Réponses: 5
    Dernier message: 13/12/2005, 12h46
  5. Importation CSV vers base de données
    Par Brice Yao dans le forum Bases de données
    Réponses: 1
    Dernier message: 29/06/2005, 13h42

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