Fichier de points en streaming

crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 - 23 janv. 2007 à 12:08
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 - 25 janv. 2007 à 11:59
Bonjour à vous tous,

Dans un fichier, j'ai des valeurs stocké sous la forme suivante :

2007011910104210.49
2007011910104310.79
2007011910104410.64
2007011910104510.49
2007011910104610.76
2007011910104710.96
2007011910104810.81

C'est un fichier texte tout bête, une ligne représentant un enregistrement, avec la date, l'heure et la valeur.

Ce que je souhaite, c'est afficher ces données sous forme de courbe dans VS 2003 (la partie affichage ne me pose pas de probleme, c'est surtout comment gerer le fond que je bloque un peut).

Le problème est que je ne vois pas vraiment quelle méthode choisir :


   -> Je suis partis sur un chargement complet en mémoire du fichier, ca fonctionne, mais je voi mal charger un fichier de 50Mo...
  -> Sinon, autre solution, définir une 'fenêtre d'affichage' bornée par date et par résolution, et ensuite je charge seulement les valeur dont j'ai besoins -> problème, je ne voi pas comment gerer ma position initial, comme par éxemple quand on se 'balade' d'avant en arrière sur la courbe ou encore faire des zoom...

Si défois quelqu'un aurrai déja fait ce genre de chose, ou aurrai un autre idées je suis prenneur.

A+, Jeff

8 réponses

jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 janv. 2007 à 14:44
Et pourquoi ne pas te contenter de lire séquentiellement ton fichier et d'afficher (dessiner) à chaque lecture d'une ligne, alors ?
Le problème de positionnement ne se pose pas si tu "lies" ce positionnement à la valeur (ici la date, je suppose) correspondante.
Ce sera d'autant facile, à mon avis, que tes dates paraissent être sous la forme YYYYMMDD (aaammjj) et donc dans un ordre similaire à celui de nombres (c'est même l'avantage indéniable de ce format).
Si tes dates sont en abcisse, il te suffit de choisir celle à laquelle tu dévolues l'origine 0 et de faire, sur chacune trouvée, un très léger calcul arithmétique au besoin (en divisant par un coefficient k si tu préfères "contractrer" ou en multipliant par un coefficient k si tu préfères "expanser"..... ou en multipliant systématiquement par un k < 0 pour "contracter" et > 0 pour "expanser"...
A toi de voir ce qui te convient finalement le mieux.
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 janv. 2007 à 16:19
Ou bien faire un outil qui converti ce fichier texte en base acess ou encore untiliser un dataconverter pour charger ton fichier sous forme dataset afin d'y executer des requete sql

@+

E.B.
0
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
23 janv. 2007 à 16:53
Merci pour vos réponses.

Pour la réponse d'15669 EBArtSoft, il me semble que ta solution est assez lourde a mettre en place, remplir une base accèss, ou encore un dataset, requetes SQL... J'ai généré un fichier aussi simple que possible alors je ne souhaite pas augmenter les "protocoles de communication".

Pour =615490 jmfmarques, t'a réponse m'a bien éclairé les idées, effectivement je vais lier ma 1ere valeur affichée à une date dans mon fichier. Mais il faut encore que je vois comment faire pour faire une sorte de 'curseur' de parcours.
En fait je crois que c'est ca qui me pose le plus de probleme, étant donnée que le fichier est lu séquenciellement...
Je n'ai pas ce problème si je met tout mon fichier dans une ArrayList mais comme je l'ai dit plus haut c'est trop lourd niveau gestion mémoire.

Je vais essayer de parcourir mon fichier à chaque changment d'index, mais j'ai bien peur que ce soit trop long.

En tout cas merci beaucoup à vous 2.

A+, Jeff
0
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
23 janv. 2007 à 16:59
Re-bonjour,

Je viens juste d'éssayer de parcourir mon fichier, en ne faisant aucun traitement et c'est vrai que c'est assez rapide (environ 31ms pour 46000 lignes)

Je vais encore tester mais avec un nombre de lignes supplémentaire mais finalement ca devrais aller.

Donc tout bon pour moi merci les gars !!!

A+,Jeff
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
23 janv. 2007 à 17:03
Dernière chose, après un test sur un fichier de 2214748 lignes (48Mo), j'arrive à un temps de lecture total d'environ 1sec ce qui est vraiment trop long..

Donc solution précédente a l'eau !!

Si vous avez une autre idée..

Jeff
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
23 janv. 2007 à 17:13
1 seconde pour lire 2214748 lignes (48Mo) est peu et sera quantité relativement raisonnable, comparée au temps qu'il faudra bien accepter de dépenser pour dessiner et qui, lui, sera inévitablement très largement supérieur !

mais bon....
0
cs_EBArtSoft Messages postés 4525 Date d'inscription dimanche 29 septembre 2002 Statut Modérateur Dernière intervention 22 avril 2019 9
23 janv. 2007 à 17:20
Pour sur !! : p

E.B.
0
crocejf2000 Messages postés 260 Date d'inscription lundi 27 janvier 2003 Statut Membre Dernière intervention 27 août 2008 1
25 janv. 2007 à 11:59
Bon finalement je pense que je vais revenir sur ma solution de départ, a savoir charger toute les lignes dans une Liste, meme si ca prend beaucoup de place en mémoire et que le temps de chargement de fichier est un peut long (environ 12 sec pour 45Mo), le confort de l'utilisateur n'en sera qu'amélioré si lors de son éxploitation c'est rapide (ca reste encore a voir).

A+,Jeff
0
Rejoignez-nous