[Visual C] Recuperation de fichier par CInternetFile ... a l'aide : (

Recuperation de fichier par CInternetFile ... a l'aide : ( [Visual C] - C++ - Programmation

Marsh Posté le 03-10-2002 à 14:01:57    

J utilise CInternetFile pour recuperer un fichier sur le net
Puis je souhaite analyser son contenu (je stock donc mon instance de CInternetFile dans ma classe afin de pouvoir le reutiliser -> plusieurs lectures ...)
 
J arrive bien a recuperer mon fichier, j arrive egalement a le lire, mais seulement une seule fois.
Si je tente de le relire une 2eme fois, c est comme si le fichier etait vide.
Probablement parceque je pointe sur la fin du fichier apres l avoir lu une premiere fois.
 
J essaye donc de me repositionner au debut, mais lorsque je fais (juste avant la lecture) un :
 
   file->SeekToBegin();
   j obtien --> "erreur d'application interne"
 
Quelqu un a une idee ?
 
voila un exemple simple (donc un peu stupide) resumant ce que je veux faire :
 

Code :
  1. CInternetSession session;
  2. CInternetFile* file = NULL;
  3. try
  4. {
  5.    file = (CInternetFile*) session.OpenURL("http://www.google.com" );
  6.    if (file)   
  7.    {
  8.     CString line;
  9. CString strFile_ = "";
  10. while (file->ReadString(line))
  11. { strFile_ += line;
  12. }
  13. // j insere ici l instruction pour repositionner mon pointeur sur le debut du fichier
  14. strFile_ = "";
  15. while (file->ReadString(line))
  16. { strFile_ += line;
  17. }
  18.     file->Close();
  19.     delete file;
  20.    }
  21.    else AfxMessageBox(":-(" );
  22. }
  23. catch(...)
  24. {
  25.  AfxMessageBox("Error Session" );
  26. }


Message édité par disq8 le 03-10-2002 à 15:47:50
Reply

Marsh Posté le 03-10-2002 à 14:01:57   

Reply

Marsh Posté le 03-10-2002 à 15:56:23    

Je ne suis pas spécialiste, mais ce comportement ne me surprend pas trop : ton fichier est lu comme un fichier séquentiel. Donc, il est impossible de se (re-)positionner à un endroit particulier du fichier. Tu ne peux faire que lire les caractères non ecnore lus.
 
Moralité, si tu veux parcourir ton fichier plusieurs fois, tu dois d'abord stocker son contenu dans un buffer mémoire quand tu le lis. Ensuite, ben... tu parcours ton buffer autant de fois que tu veux.  :sarcastic:

Reply

Marsh Posté le 03-10-2002 à 16:42:08    

Pourquoi pas, cependant les methodes existent (SeekToBegin, Seek ...) il doit donc exister un mode de lecture adapté, a moins que ce soit seulement du a l'heritage de la classe mere CFile  :??:
 
Pas d'autres idees ?
 
Sinon, j vais contourner le probleme en faisant une copie en local du fichier.
 
Merci de ton aide bifacemcleod  :hello: .

Reply

Marsh Posté le 03-10-2002 à 20:48:03    

up  :cry:

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed