Siteauludo
Messages postés60Date d'inscriptionmercredi 25 mai 2005StatutMembreDernière intervention15 mai 2007
-
18 mars 2006 à 17:33
gyzmo222
Messages postés66Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention 2 juin 2006
-
19 mars 2006 à 17:19
Bonjour,
Voilà, j'utilise Visual Studio C# 2005 Express (Donc Frameworks 2.0), et je suis en train de faire une petite application qui devrai prendre la source d'une page web, et trouver quelques infos dedans.
Exemple concret (c'est ce que je veux faire) : sur http://quotes.ubs.com/quotes/language=F, il y a un tableau contenant des valeurs, et je souhaiterai afficher un condensé de ces infos, c'est à dire extraire les infos en rouge dans la source suivante :
---------------------------------------------
(début)...
Name,
Close,
Low,
High,
Last,
Chg. %,
Voilà, il faudrai que je puisse isoler les chiffres en rouge de ce paquet de texte. Les chiffre en rouge et en bleu changeront chaque jour, mais le reste du code ne changera pas.
Si vous avez une idée, elle sera la bienvenue, car franchement je n'ai pas la moindre idée de la manière de procéder.
gyzmo222
Messages postés66Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention 2 juin 20061 19 mars 2006 à 11:05
//lire page
try
{
int k=0;
string[] split = null;
// Création d'une instance de StreamReader pour permettre la lecture de notre fichier
StreamReader monStreamReader = new StreamReader(@"C:\cheminfichier\page.html");
string ligne = monStreamReader.ReadLine();
// Lecture de toutes les lignes et affichage de chacune sur la page
while (ligne != null)
{
if (ligne.Length > 60) //demande une ligne plus longue que 60 caractères
{
ligne = ligne.Substring(46, 13);
string result = "";
string delimStr = "<>";
char[] delimiter = delimStr.ToCharArray();
if (ligne.Substring(0, 1) == ">") //vérifie que le premier élement de la ligne (index 46) soit >
{
split = ligne.Split(delimiter, 3); //coupe sur les delimiter en max 3 parties
ligne = split[1]; //récupère la partie numéro 2 (index 1)
try
{
int.Parse(ligne.Substring(0, 1)); //vérifie que ca soit un nombre sinon bang :p
result = ligne;
k++;
if (k == 4) { label1.Text += result; k = 0; }
} catch { label2.Text +"bang"; k 0; }
}
else
{
k = 0;
}
}
ligne = monStreamReader.ReadLine();
}
// Fermeture du StreamReader (attention très important)
monStreamReader.Close();
}
catch (Exception ex)
{
// Code exécuté en cas d'exception
label2.Text = "Une erreur est survenue au cours de la lecture !";
//label2.Text = ex.Message;
}
Voila, à ne pas changer: la longueur de la ligne avant le nombre à récupérer et les signes <> aisi que l'ordre (4).
En rouge le label des erreurs, en mauve, celui ou je récupère les nombres souhaités
gyzmo222
Messages postés66Date d'inscriptionlundi 27 juin 2005StatutMembreDernière intervention 2 juin 20061 19 mars 2006 à 17:19
Jamais prétendu que mon code était optimisé, il est meme brouillon mais il fonctionne... C'est un coup de main, je n'ai pas la pretention de faire le boulo des autres à leur place. Effectivement, un finally l'optimiserait d'avantage et comme ressources non managés, il serait mieux de mettre un close pour libérer l'espace mémoire