Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2996 connectés 

  FORUM HardWare.fr
  Programmation
  C++

  acces multiple donnees fichier txt

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

acces multiple donnees fichier txt

n°917618
damien90
Posté le 07-12-2004 à 23:50:13  profilanswer
 

Salut à tous,  
J'ai un petit souci:
Je dois acceder des centaine de fois à un fichier pour y recuperer des informations.
Je ne vous cache pas que c très lent.
Je voudrais essayer de copier mon fichier dans un buffer pour accelerer mes acces. Or, je ne sais pas vraiment comment faire pour creer ce buffer, comment ensuite acceder à mes données dans ce buffer !
Si vous pouvez m'aider
Merci
Damien

mood
Publicité
Posté le 07-12-2004 à 23:50:13  profilanswer
 

n°917692
spokup
Posté le 08-12-2004 à 09:19:52  profilanswer
 

pourquoi ne pas tout mettre en mémoire ? ya quoi exactement dans ce fichier ?

n°917743
damien90
Posté le 08-12-2004 à 10:27:46  profilanswer
 

C'est un fichier netlist qui contient du texte.
Mais si je le mets en memoire, comment je fais pour l'utiliser ensuite.
Le fichier fait environ 2000 lignes.
je te donne le code que j'ai utiliser pour le mettre en memoire:
 
int main()
{
ifstream is ("C:\\Prog\\COB-10.edn" );
is.seekg (0, ios::end);
int length( is.tellg() );
is.seekg (0, ios::beg);
char * buffer = new char [length];
is.read (buffer,length);
string str( buffer);
delete[] buffer;
cout << str;  
 
merci de votre aide

n°917881
gilou
Modérateur
Modzilla
Posté le 08-12-2004 à 13:03:56  profilanswer
 

Citation :

Mais si je le mets en memoire, comment je fais pour l'utiliser ensuite.

 
Ben si tu nous expliquais l'utilisation que tu veux en faire, on pourrait te faire des suggestions.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°917891
damien90
Posté le 08-12-2004 à 13:25:24  profilanswer
 

OK excuse
Donc voilà, je fais un programme qui rempli un arbre avec des informations d'un schéma electronique (ex n° patte, nom patte, type, ...)
Ces informations je les trouve dans un fichier netlist (texte) qui fais comme je l'ai dejà dis, environ 2000 lignes (il y a beaucoup d'info).
Je dois acceder à ces infos très souvent, puisque pour chaque composant, il faut que je cherche ces diff infos (je ne sais pas si je suis très clair).
 
Donc j'ai besoin accéder à ce string comme si c'était un fichier:
Lire un ligne et la traiter
Chercher un element ou plusieurs dans le texte
Extraire des informations.
 
J'ai dejà réaliser mon truc, mais sans mettre le fichier en memoire, et donc c assez long (env 2 min).
 
Merci de votre aide

n°917959
gilou
Modérateur
Modzilla
Posté le 08-12-2004 à 14:20:57  profilanswer
 

Citation :

Je dois acceder à ces infos très souvent, puisque pour chaque composant, il faut que je cherche ces diff infos


C'est a dire que pour chaque info necessaire, tu reparse a chaque fois les 2000 lignes? ca expliquerait pourquoi ca prend du temps.
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°917971
damien90
Posté le 08-12-2004 à 14:29:36  profilanswer
 

je repasse pas vraiement ttes les lignes, mais je parcours depuis le debut jusqu'à trouver l'info voulu.
Auris - tu une autre solution pour aller plus vite ?
merci a +

n°917999
spokup
Posté le 08-12-2004 à 15:07:47  profilanswer
 

moi je mettrait tou en mémoire, structures, tableau ... et après je chercherai dedans même si ya bcp d'info !

n°918001
damien90
Posté le 08-12-2004 à 15:09:09  profilanswer
 

ouais mais comment tu cherche dedans une fois en memoire ?

n°918025
spokup
Posté le 08-12-2004 à 15:41:33  profilanswer
 

bon fait voir a quoi ressemble les première ligne de ton fichier texte et dit moi ce que tu cherche dedans a chaque fois et je pourrait t'expliquer comment

mood
Publicité
Posté le 08-12-2004 à 15:41:33  profilanswer
 

n°918033
damien90
Posté le 08-12-2004 à 15:48:34  profilanswer
 

voilà le genre de ligne:
(net TCK
      (joined
       (portRef DA11 (instanceRef J3))
       (portRef A2_A (instanceRef U12))
       (portRef &2 (instanceRef R49))
       (portRef &9 (instanceRef J4))
       (portRef &1 (instanceRef R43))
       (portRef A2_B (instanceRef U12))))
     (net TDI
      (joined
       (portRef DA9 (instanceRef J3))
       (portRef A0_B (instanceRef U12))
       (portRef &2 (instanceRef R47))
       (portRef &5 (instanceRef J4))
       (portRef A0_A (instanceRef U12))))
     (net N16829008
      (joined
       (portRef DA1 (instanceRef J3))
       (portRef &2 (instanceRef JP17))))
     (net N16829030
      (joined
       (portRef DA0 (instanceRef J3))
       (portRef &2 (instanceRef JP18))))
     (net N19380745
      (joined
       (portRef &1Y (instanceRef U33))
       (portRef OBAREBAR_A (instanceRef U12))))
     (net N19379856 (par ex)
      (joined
       (portRef &1A (instanceRef U33))
       (portRef &2 (instanceRef R101))
       (portRef OBAREBAR_B (instanceRef U12))
       (portRef A2 (instanceRef SW7))))
 
A chaque fois je recherche la chaine devant net et j'utilise les information devans portref et instanceRef.
En resume:
Recherche ds le txt la chaine de carac placé devant 'net', et ensuite je dois remplir les champs d'une classe avec les autres infos.
 
Merci a+

n°918051
SomeBugsIn​Me
life suxx
Posté le 08-12-2004 à 15:57:24  profilanswer
 

bah si tu utilises toutes les lignes au final, tu as intérêt à parser tout ton fichier en un coup au début du programme.

n°918062
damien90
Posté le 08-12-2004 à 16:09:25  profilanswer
 

oui mais comment faire ,
Et comment recuperer mes informations ?

n°918075
spokup
Posté le 08-12-2004 à 16:19:54  profilanswer
 

moi je ferai un truc dans ce genre la, mais c'est peut etre complétement naze et pas adapté a ton problème ...
 

Code :
  1. typedef struct
  2. {
  3.    char m_szName[32];
  4.    int m_iNumPortRef;
  5.    int *m_pInstanceRef;
  6. } pouet;
  7. std::vector<*pouet> tab;
  8. int g_iSize=0;
  9. int Chargement(char *szFileName)
  10. {
  11. FILE *f = fopen(szFileName, "r" );
  12. if(!f)
  13.  return 0;
  14. char szName[23];
  15. char szPortRef;
  16. pouet p;
  17. while(!fscanf(szFileName, "(net %s\n(joined\n%s\n", szName, szPortRef);
  18. {
  19.  printf(p.m_szName, szName);
  20.  p.m_pInstanceRef = ParsePortRef(szPortRef, &p.m_iNumPortRef);
  21.  ++g_iSize;
  22.  tab.push(&p);
  23. }
  24. fclose(f);
  25. return 1;
  26. }
  27. int *ParsePortRef(char *string, int *num);
  28. {
  29. ...
  30. *num = ...;
  31. int *truc = new[*num];
  32. ...
  33. return truc;
  34. }
  35. int comparer(char *string)
  36. {
  37. for(int i=0; i<g_iSize; i++)
  38. {
  39.  if(!strcmp(tab[i]->m_szName, string))
  40.  {
  41.   ...
  42.   return 1;
  43.  }
  44. }
  45. return 0;
  46. }

n°918118
gilou
Modérateur
Modzilla
Posté le 08-12-2004 à 17:05:04  profilanswer
 

Citation :

Donc voilà, je fais un programme qui rempli un arbre avec des informations d'un schéma electronique


Il a quelle tete ton arbre?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°918193
damien90
Posté le 08-12-2004 à 18:23:09  profilanswer
 

Mon arbre, il a une tete de c...
Non je rigole, en fait ma racine a un fils qui a autant de frère qu'il y a de pattes à mon composant.
En faite, c'est une sorte de liste chaine.
 

n°918638
gilou
Modérateur
Modzilla
Posté le 09-12-2004 à 10:52:00  profilanswer
 

Un peu de code pour la structure de donnée de ton arbre et grossierement l'algo de comment tu le remplis, please...
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C++

  acces multiple donnees fichier txt

 

Sujets relatifs
[C] Ecrire le contenu d'une matrice dans un fichierpb manipulation buffer fichier texte
Ecrire dans un fichier excel[Oracle] Créer une base de données
Pbm de droits lors de l'acces d'une applet signée via le javascriptprobleme ecriture fichier
Transfert d'un fichier HTTP > FTP ( serveur > serveur )Test d'existance d'un fichier
spamming et bases de donnees (legislation)Fichier Manifest pour les exe OK... Mais pour les ocx ?
Plus de sujets relatifs à : acces multiple donnees fichier txt


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR