Recuperer des donnees ds un .txt debutante C#
Fermé
Cynthia 22
Messages postés
6
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
24 juin 2009
-
22 juil. 2008 à 09:20
Rminator - 26 mai 2011 à 12:18
Rminator - 26 mai 2011 à 12:18
A voir également:
- Recuperer des donnees ds un .txt debutante C#
- Comment récupérer un compte facebook piraté - Guide
- Comment recuperer un message supprimé sur whatsapp - Guide
- Recuperer video youtube - Guide
- Récupérer photo instagram - Guide
- Recuperer mon compte gmail - Guide
7 réponses
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
6
22 juil. 2008 à 10:24
22 juil. 2008 à 10:24
Salut,
Sans être sur je dirai que tu as la possibilité lorsque tu lis les lignes avec tes valeurs de les transformer en tableau avec le fonction nomdetastring.split(" ");
tu fais string[] stab=nomdetastring.split(" "); ou un truc du style je sais plus précisément;
et ta string est découpée en mot a chaque " " .
Tu pourras ensuite traité mot par mot (ou valeur par valeur)
Si tu veux réecrire dans ton fichier texte ensuite il faut reconcaténer ton tableau dans un boucle.
Cela devrai marcher mais je ne sais pas si c'est le plus simple.
Mich
Sans être sur je dirai que tu as la possibilité lorsque tu lis les lignes avec tes valeurs de les transformer en tableau avec le fonction nomdetastring.split(" ");
tu fais string[] stab=nomdetastring.split(" "); ou un truc du style je sais plus précisément;
et ta string est découpée en mot a chaque " " .
Tu pourras ensuite traité mot par mot (ou valeur par valeur)
Si tu veux réecrire dans ton fichier texte ensuite il faut reconcaténer ton tableau dans un boucle.
Cela devrai marcher mais je ne sais pas si c'est le plus simple.
Mich
Cynthia 22
Messages postés
6
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
24 juin 2009
24 juil. 2008 à 07:46
24 juil. 2008 à 07:46
Yep, merci Mich, la fonction Split marche.
Mais ce que je souhaiterai, c'est placer les valeurs dans un tableau dont la taille est (nombre de ligne, nombre de colonne) et ca, je ne sait pas comment faire.
Donc si tu passes par la, n'hesite pas a me donner un ptit coup de main
Mais ce que je souhaiterai, c'est placer les valeurs dans un tableau dont la taille est (nombre de ligne, nombre de colonne) et ca, je ne sait pas comment faire.
Donc si tu passes par la, n'hesite pas a me donner un ptit coup de main
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
6
24 juil. 2008 à 09:48
24 juil. 2008 à 09:48
Salut Cynthia,
je pense que tu dois suivre cet algo:
1/se placer au début des données
2/lire les lignes jusqu'à la fin dans une boucle do{}while ce qui permettera de savoir ton nombre de lignes avec nomdutableau1.lenght() (je crois que c'est ça mais à vérifier).
3/prendre une ligne et la découper avec split(" ") pour avoir un tableau. ainsi tu connaîtra le nombre de colonnes de la même manière.
4/ensuite créé et remplir le tableau
**Attention cela marche que si les lignes ont autant de colonnes sinon il faut les faire une par une et prendre le nombre le plus grand.
Ce code n'est ni optimisé ni expliqué ni testé mais je n'ai pas trop le temps en début de journée.
je suis désolé, je te recontacterai quand je serai revenu pour savoir si cela marche ou si tu a besoin d'explication.
Mich
PS: T'es vraiment en Australie?
je pense que tu dois suivre cet algo:
1/se placer au début des données
2/lire les lignes jusqu'à la fin dans une boucle do{}while ce qui permettera de savoir ton nombre de lignes avec nomdutableau1.lenght() (je crois que c'est ça mais à vérifier).
3/prendre une ligne et la découper avec split(" ") pour avoir un tableau. ainsi tu connaîtra le nombre de colonnes de la même manière.
4/ensuite créé et remplir le tableau
//se placer au début int nbreligne=-1; int nbrecol; do { //boucle pour regarder combien de ligne string temp = fluxLecture.ReadLine(); //lecture d'une ligne nbreligne++; } while (temp != null); string[] nomdutableau1=new string[nbreligne]; //se replacer au début des données for(int i=0;i<nbreligne;i++) nomdutableau1[i]=fluxLecture.ReadLine(); //regarder le nombre de colonnes ** nbrecol=(nomdutableau1.split(" ")).lenght(); do{ string[][] donnée=new string[nbreligne][nbredecol]; for( i=0;i<nbreligne;i++){ string[] temp=nomdutableau1.split(" "); //découpe le tableau contenant les lignes pour délimiter les colonnes for(int j=0;j<nbrecol;j++){ donnée[i][j]=temp[j]; //remplit les colonnes du tableau final a la ligne découper } }
**Attention cela marche que si les lignes ont autant de colonnes sinon il faut les faire une par une et prendre le nombre le plus grand.
Ce code n'est ni optimisé ni expliqué ni testé mais je n'ai pas trop le temps en début de journée.
je suis désolé, je te recontacterai quand je serai revenu pour savoir si cela marche ou si tu a besoin d'explication.
Mich
PS: T'es vraiment en Australie?
Cynthia 22
Messages postés
6
Date d'inscription
mercredi 2 juillet 2008
Statut
Membre
Dernière intervention
24 juin 2009
24 juil. 2008 à 10:51
24 juil. 2008 à 10:51
Salut,
je te remercie pour ce que tu as fait.
J'ai eu le temps de tester le programme vite fait. Il a l'air de marcher jusqu'au moment ou j'utilise les Split.
A partir de la, le compilateur me sort cette erreur:
'System Array' does not contain a definition for'Split'.
Je regarderai cela de plus pres demain; je m'y suis pas trop interressee.
Oui, je suis bien en Australie. Ici, il est quasi 7h PM donc je dois quitter le travail.
Bonne journee
A bientot
Cynthia
je te remercie pour ce que tu as fait.
J'ai eu le temps de tester le programme vite fait. Il a l'air de marcher jusqu'au moment ou j'utilise les Split.
A partir de la, le compilateur me sort cette erreur:
'System Array' does not contain a definition for'Split'.
Je regarderai cela de plus pres demain; je m'y suis pas trop interressee.
Oui, je suis bien en Australie. Ici, il est quasi 7h PM donc je dois quitter le travail.
Bonne journee
A bientot
Cynthia
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
6
24 juil. 2008 à 11:43
24 juil. 2008 à 11:43
Bah il y en a qui ont de la chance je sais pas ce que je donnerai pour être à ta place!!!Je rêve d'aller dans ce pays depuis des années!!!
Moi je suis à Calais c'est pour te dire la différence.
Sinon il faut mettre: nomdutableau[i].split(" ");
car nomdutableau est l'adresse du premier élément du tableau de string alors que nomdutableau[i] est un élément donc une string, donc "splitable" si je puis dire :) .
Moi ici il est l'heure d'aller manger donc j'y vais.
N'hésite pas si tu as encore un problème, je t'aiderai si le temps me le permet.
Bonne soirée, à demain peu être.
Mich
Moi je suis à Calais c'est pour te dire la différence.
Sinon il faut mettre: nomdutableau[i].split(" ");
car nomdutableau est l'adresse du premier élément du tableau de string alors que nomdutableau[i] est un élément donc une string, donc "splitable" si je puis dire :) .
Moi ici il est l'heure d'aller manger donc j'y vais.
N'hésite pas si tu as encore un problème, je t'aiderai si le temps me le permet.
Bonne soirée, à demain peu être.
Mich
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Merci pour les conseils, cela m'a bien fait avancer.
La je suis bloquee sur un autre point (peut etre que tu connais la solution).
J'ai un tableau de float et je souhaiterai le convertir en float pour utiliser une fonction.
Sais tu comment y arriver?
Voici une partie de mon code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace test1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dplot.DPlot_FindDPLOTLIB();
dplot.DPlot_SetErrorMethod((2));
}
private void button1_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader("C:\\Experiment26062008.txt");
StreamReader sp = new StreamReader("C:\\Experiment26062008.txt");
string line = sr.ReadLine();
//se placer au début
int nbline = 0;
int nbraw = 18;
int header = 11;
do
{ //boucle pour regarder combien de ligne
line = sr.ReadLine(); //lecture d'une ligne
nbline = nbline + 1;
//Console.WriteLine(line);
} while (line != null);
// Console.WriteLine(nbline);
int nbusefullines = nbline - header;
//Console.WriteLine(nbusefullines);
//do{
string[] nomdutableau1 = new string[nbline];
// string[] nomdutableau2 = new string[nbline];
string[,] data = new string[nbline - header, nbraw];
// while ((line) != null)
do
{
for (int h = 0; h < nbline; h++)
{
nomdutableau1[h] = sp.ReadLine();
//Console.WriteLine(nomdutableau1[i]);
}
for (int h = 0; h < nbline - header; h++)
{
nomdutableau1[h] = nomdutableau1[h + header];
// Console.WriteLine(nomdutableau1[i]);
}
for (int h = 0; h < nbline - header; h++)
{
string[] MyStringArray = nomdutableau1[h].Split(' ');
//Console.WriteLine(MyStringArray[12]);
for (int l = 0; l < nbraw; l++)
{
data[h, l] = MyStringArray[l]; //fill the raws
}
}
} while ((line) != null);
float[] abscisse = new float[nbusefullines];
for (int h = 0; h < nbusefullines; h++)
{
abscisse(h) = float.Parse(data[h, 2]);
// Console.WriteLine(abscisse[i]);
}
float[] ordonnee = new float[nbusefullines];
for (int h = 0; h < nbusefullines; h++)
{
ordonnee[h] = float.Parse(data[h, 3]);
// Console.WriteLine(ordonnee[i]);
}
float[] hauteur = new float[nbusefullines];
for (int h = 0; h < nbusefullines; h++)
{
hauteur[h] = float.Parse(data[h, 4]);
// Console.WriteLine(hauteur[i]);
}
// Console.WriteLine(data[923,17]);
//close the file
sr.Close();
dplot.DPLOT dp = new dplot.DPLOT();
dp.Initialize();
dp.Version = dplot.DPLOT_DDE_VERSION;
dp.DataFormat = dplot.DATA_3D;
dp.XAxis = "x";
dp.YAxis = "y";
DocNum = dplot.DPlot_Plot8(ref dp,ref abscisse,ref ordonnee, "[DocMaximize()][FilePrint()]"); }
Donc voila, pour utiliser la fonction DPlit_Plot8, il faut que abscisse et ordonnee soient des float.
Aurai tu des conseils a me donner??
Merci d'avance
A bientot
Cynthia
La je suis bloquee sur un autre point (peut etre que tu connais la solution).
J'ai un tableau de float et je souhaiterai le convertir en float pour utiliser une fonction.
Sais tu comment y arriver?
Voici une partie de mon code:
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.IO;
namespace test1
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
dplot.DPlot_FindDPLOTLIB();
dplot.DPlot_SetErrorMethod((2));
}
private void button1_Click(object sender, EventArgs e)
{
StreamReader sr = new StreamReader("C:\\Experiment26062008.txt");
StreamReader sp = new StreamReader("C:\\Experiment26062008.txt");
string line = sr.ReadLine();
//se placer au début
int nbline = 0;
int nbraw = 18;
int header = 11;
do
{ //boucle pour regarder combien de ligne
line = sr.ReadLine(); //lecture d'une ligne
nbline = nbline + 1;
//Console.WriteLine(line);
} while (line != null);
// Console.WriteLine(nbline);
int nbusefullines = nbline - header;
//Console.WriteLine(nbusefullines);
//do{
string[] nomdutableau1 = new string[nbline];
// string[] nomdutableau2 = new string[nbline];
string[,] data = new string[nbline - header, nbraw];
// while ((line) != null)
do
{
for (int h = 0; h < nbline; h++)
{
nomdutableau1[h] = sp.ReadLine();
//Console.WriteLine(nomdutableau1[i]);
}
for (int h = 0; h < nbline - header; h++)
{
nomdutableau1[h] = nomdutableau1[h + header];
// Console.WriteLine(nomdutableau1[i]);
}
for (int h = 0; h < nbline - header; h++)
{
string[] MyStringArray = nomdutableau1[h].Split(' ');
//Console.WriteLine(MyStringArray[12]);
for (int l = 0; l < nbraw; l++)
{
data[h, l] = MyStringArray[l]; //fill the raws
}
}
} while ((line) != null);
float[] abscisse = new float[nbusefullines];
for (int h = 0; h < nbusefullines; h++)
{
abscisse(h) = float.Parse(data[h, 2]);
// Console.WriteLine(abscisse[i]);
}
float[] ordonnee = new float[nbusefullines];
for (int h = 0; h < nbusefullines; h++)
{
ordonnee[h] = float.Parse(data[h, 3]);
// Console.WriteLine(ordonnee[i]);
}
float[] hauteur = new float[nbusefullines];
for (int h = 0; h < nbusefullines; h++)
{
hauteur[h] = float.Parse(data[h, 4]);
// Console.WriteLine(hauteur[i]);
}
// Console.WriteLine(data[923,17]);
//close the file
sr.Close();
dplot.DPLOT dp = new dplot.DPLOT();
dp.Initialize();
dp.Version = dplot.DPLOT_DDE_VERSION;
dp.DataFormat = dplot.DATA_3D;
dp.XAxis = "x";
dp.YAxis = "y";
DocNum = dplot.DPlot_Plot8(ref dp,ref abscisse,ref ordonnee, "[DocMaximize()][FilePrint()]"); }
Donc voila, pour utiliser la fonction DPlit_Plot8, il faut que abscisse et ordonnee soient des float.
Aurai tu des conseils a me donner??
Merci d'avance
A bientot
Cynthia
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
6
31 juil. 2008 à 11:08
31 juil. 2008 à 11:08
A première vue je peux te dire qu'il faut mettre -1 au début du calcul de sommet car si il est vide tu parcoures quand me^me une fois la boucle donc: -1+1=0 //vide
int nbline = -1;
int nbraw = 18;
int header = 11;
do
{ //boucle pour regarder combien de ligne
line = sr.ReadLine(); //lecture d'une ligne
nbline = nbline + 1;
//Console.WriteLine(line);
} while (line != null);
Pour le reste je vais regarder cet après midi la je vais devoir partir à un rendez-vous.
A+ Mich
int nbline = -1;
int nbraw = 18;
int header = 11;
do
{ //boucle pour regarder combien de ligne
line = sr.ReadLine(); //lecture d'une ligne
nbline = nbline + 1;
//Console.WriteLine(line);
} while (line != null);
Pour le reste je vais regarder cet après midi la je vais devoir partir à un rendez-vous.
A+ Mich
mich62120
Messages postés
631
Date d'inscription
jeudi 22 novembre 2007
Statut
Membre
Dernière intervention
21 janvier 2010
6
31 juil. 2008 à 14:00
31 juil. 2008 à 14:00
Re,
J'ai regardé et il me semble bizarre que tu ne mette jamais à jour le nombre de colonnes.
c'est un truc du genre:
2/Pour ce qui est de la conversion string==>float il y a une fonction:
float a =Float.Parse(nomdetastring);
Mais cela peut poser problème selon ton OS surtout que tu n 'es pas en France à cause des points et virgule.
Enfin bref je pense que tu comprendras ce que tu dois faire en regardant ceci.
Bonne chance et demande si tu as besoin, ça fait plaisir et j'apprends des trucs en même temps.
Mich
J'ai regardé et il me semble bizarre que tu ne mette jamais à jour le nombre de colonnes.
c'est un truc du genre:
for (int h = 0; h < nbline - header; h++) { string[] MyStringArray = nomdutableau1[h].Split(' '); //Console.WriteLine(MyStringArray[12]); nbraw=MyStringArray.lenght(); for (int l = 0; l < nbraw; l++) { data[h, l] = MyStringArray[l]; //fill the raws }
2/Pour ce qui est de la conversion string==>float il y a une fonction:
float a =Float.Parse(nomdetastring);
Mais cela peut poser problème selon ton OS surtout que tu n 'es pas en France à cause des points et virgule.
Enfin bref je pense que tu comprendras ce que tu dois faire en regardant ceci.
Bonne chance et demande si tu as besoin, ça fait plaisir et j'apprends des trucs en même temps.
Mich
Slt voulais juste savoir, dans le code plus haut,que represente header,j'ai recu comme projet de stage,le devoir de developper une Appli pareil,et du coup je suis coincé au niveau de la lecture des valeurs dans le fichier texte enfin de pouvoir les sauvegarder dans un tableu,et par la suite en faire des courbes selon le nombre de valeur representées sur la premiere ligne Horizontale,merci d'avance, j'attend votre aide