yabiyou
Messages postés43Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention 6 septembre 2007
-
20 août 2007 à 14:31
tomlev
Messages postés25Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention28 août 2007
-
21 août 2007 à 14:55
Bonjour,
je suis grand débutant en C # et je n'arrrive pas à lire un fichier texte.
Je voudrais stocker chaque ligne dans l'élément n°i d'un tableau pour le fichier que j'ai préalablement sélectionner, openfiledialog1.filenames(2) par exemple
tomlev
Messages postés25Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention28 août 2007 20 août 2007 à 16:37
OK...
D'abord, vu que les valeurs A, B et C sont associées, je pense qu'il vaudrait mieux créer une structure pour les regrouper sous forme de triplets, par exemple :
struct Triplet
{
public double A;
public double B;
public double C;
}
Ensuite tu manipuleras un tableau de triplets plutot que 3 tableaux. Vu que tu ne connais pas à l'avance le nombre de ligne, il vaut mieux utiliser une liste dynamique de triplets :
List<Triplet> liste = new List<Triplet>();
Pour l'algorithme global, tu peux faire un truc comme ca :
Initialiser la liste;
Pour chaque fichier sélectionné
{
Pour chaque ligne dans le fichier
{
Lire les valeurs (en utilisant String.Split);
Créer un nouveau triplet t avec ces valeurs;
Ajouter t à la liste ( liste.Add(t) );
}
}
tomlev
Messages postés25Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention28 août 2007 20 août 2007 à 14:55
Je ne suis pas sûr de bien comprendre ton problème... tu cherches à obtenir la liste des fichiers sélectionnés, ou à lire le contenu de ces fichiers ?
Tu peux obtenir les chemins d'accès des fichiers en faisant un foreach sur la collection Filenames du dialogue :
foreach (string filename in openFileDialog1.Filenames)
{
// faire qqch avec filename
}
Pour lire le contenu d'un fichier donné, tu peux faire comme ça :
StreamReader rd = new StreamReader(filename);
string line;
while ((line = rd.ReadLine()) != null)
{
// faire qqch avec line
}
rd.Close();
Je veux pouvoir lire des fichiers et en extraire 3 tableaux A, B et C contenant les valeurs numériques associées.
De plus je veux aussi faire une multiselection qui me classe par ordre alphabétique les fichiers qui sont numérotés TM1, TM2, TM3 etc et effecture l'opération précédente pour obtenir des "grands" tableaux contenant les valeurs de A, B et C de l'ensemble des fichiers sélectionné
bernie666
Messages postés427Date d'inscriptionmercredi 1 octobre 2003StatutMembreDernière intervention29 janvier 20081 20 août 2007 à 16:32
Salut,
//declaration du fichier a parcourir
StreamReader unFic = new StreamReader(unChemin);
//declaration d'une variable intermediare qui va recuperer chaque streemReader.readline()
String ligne;
//on parcour le fichier tant qu'on a des enregistrement
while((ligne = unFic.ReadLine()) != null)
{
//et on affecte chaque ligne du fichier a la collection
//ici tu va récuperer la ligne de ton fichier vu que le caractere séparateur est un espace tu fais un split sur la ligne pour voir un tableau de 3 caracteres => tu parcour ce tableau et tu le dispatch entre les 3 autres tableaux qui contiennent les valeures A , B , C
}
unFic.Close();
yabiyou
Messages postés43Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention 6 septembre 2007 21 août 2007 à 10:53
Merci pour les réponses!!
Mais je ne comprend pas bien ce qui est stocker dans ligne. Il s'agit d'un tableau, d'une chaine de caractères... Quand j'essaie d'afficher sa valeur dans une TextBaox il n'y a rien.
yabiyou
Messages postés43Date d'inscriptionjeudi 19 juillet 2007StatutMembreDernière intervention 6 septembre 2007 21 août 2007 à 10:53
Merci pour les réponses!!
Mais je ne comprend pas bien ce qui est stocker dans ligne. Il s'agit d'un tableau, d'une chaine de caractères... Quand j'essaie d'afficher sa valeur dans une TextBaox il n'y a rien.
tomlev
Messages postés25Date d'inscriptionsamedi 22 octobre 2005StatutMembreDernière intervention28 août 2007 21 août 2007 à 14:55
La fonction StreamReader.ReadLine() lit une ligne du fichier tant que la fin du fichier n'est pas atteinte. Elle renvoie une chaine de caractère (string), par exemple "A=4.566 B=6.333 C=7.555". Quand la fin du fichier est atteinte, la fonction renvoie null (d'où le test dans le while)