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

  FORUM HardWare.fr
  Programmation
  C++

  readFile()

 

Sujet(s) à lire :
    - Visual C++
 

 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

readFile()

n°1106166
d_imane
Posté le 02-06-2005 à 21:16:14  profilanswer
 

void base::WriteRealDataFile(char *pf)
{
    HANDLE hSrc, hDest;
    DWORD dwRead=0, dwWritten=0;
 float g[1000];
 boolean b;
 
   hSrc = CreateFile(pf, GENERIC_WRITE, 0, NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
 
   if (hSrc == INVALID_HANDLE_VALUE)
  {cout << "Unable to open " <<endl;getch();exit(1);}
 
else{
  for(int l=0;l<DimBase;l++)
  for(int j=0;j<des[l].DimVect;j++)
{ WriteFile(hSrc,&(des[l].id), sizeof(float), &dwWritten, NULL);
 cout<<des[l].vect[j].value<<endl;
 }    
}
CloseHandle(hSrc);
//====================lecture==============
hSrc = CreateFile(pf, GENERIC_READ,0,NULL,OPEN_ALWAYS, FILE_ATTRIBUTE_NORMAL, 0);
 
 
b=ReadFile(hSrc,g,sizeof(float), &dwRead, NULL);
CloseHandle(hSrc);
 
 for(int p=0;p<100;p++)//j'affiche les 100 premeier char
  cout <<g[p]<<endl;
 :??: la saisie est juste ,par contre les valeurs que je récupére après la lecture sont différentes de celles saisie.
 

mood
Publicité
Posté le 02-06-2005 à 21:16:14  profilanswer
 

n°1106271
HelloWorld
Salut tout le monde!
Posté le 02-06-2005 à 22:43:50  profilanswer
 

Là tu lis sizeof( float ) octets, soit un seul float. Et puis faut te fier à dwRead pour savoir combien tu as lu.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1106284
d_imane
Posté le 02-06-2005 à 23:05:01  profilanswer
 

je veux lire normalement foat by float c'ad je veux afficher tous simplement les float que j'ai saisi,je n'ai pas compris votre remarque à propos de dwRead,
merci

n°1106335
HelloWorld
Salut tout le monde!
Posté le 02-06-2005 à 23:36:16  profilanswer
 

Là tu demandes à lire un seul float. Donc au maximum tu n'auras qu'un seul float de lu.
dwRead contient le nombre d'octet lus. C'est pas parce que tu demandes à lire XXX octets qu'il seront tous lus.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1106366
d_imane
Posté le 03-06-2005 à 00:21:43  profilanswer
 

:ange: je comprend maintenant ce que vous dites,mais je ne sais tjs pas comment récupérer mes float écrite dans le fichier par la fonction    
for(int l=0;l<DimBase;l++)
 for(int j=0;j<des[l].DimVect;j++)
{WriteFile(hSrc,&(des[l].id), sizeof(float), &dwWritten, NULL);
 cout<<des[l].vect[j].value<<endl; }

n°1106497
HelloWorld
Salut tout le monde!
Posté le 03-06-2005 à 09:33:00  profilanswer
 

Indice : tu écris i x j valeur, et tu en lis une seule...
Au passage en terme de performances, ils erait préférable d'écrire plus de flot d'un coup.
Pour demander à lire 100 float d'un coup, ben multiplie simplement le sizeof( float ) par 100 dans ton ReadFile. Divise ensuite dwRead par sizeof( float ) pour savoir combien tu en as lu.
 
Pense à utiliser les balises [ cpp ] aussi pour ton code, merci.


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1106913
d_imane
Posté le 03-06-2005 à 13:46:01  profilanswer
 

:pt1cable: voila j'ai changer mes deux fonctions de lecture et écriture:
void base::WriteRealDataFile(char *pf)
{
    HANDLE hSrc;
    DWORD dwRead=0, dwWritten=0;
 
 
hSrc = CreateFile(pf, GENERIC_WRITE, FILE_SHARE_WRITE,NULL, CREATE_ALWAYS, FILE_ATTRIBUTE_NORMAL, NULL);
 
if (hSrc == INVALID_HANDLE_VALUE)
 {cout << "Unable to open " <<endl;getch();exit(1);}
 
else{
  for(int l=0;l<DimBase;l++)
 {WriteFile(hSrc,&((des[l].id)), sizeof(int), &dwWritten, NULL);
  cout<<des[l].id<<endl;
}
}
 
//=============================================================
void base::ReadRealDataFile(char *pf)
{
   
HANDLE hSrc;
DWORD dwRead=0;
int c;
 
hSrc = CreateFile(pf, GENERIC_READ,FILE_SHARE_READ, NULL,OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL,0);
 
{for (int i=0;i<10;i++)
 {(ReadFile(hSrc,&c,sizeof(int), &dwRead, NULL));
   cout<<"c= "<<c<<endl;
}
//=====================================
 :bounce: j'ai testé pour les 10 premiers int ,et j'ai bien récupérer mes entiers du début,je vais faire de meme pour les float
 :hello:  

  • Si j'ain bien compris ta remarque la balise [cpp]je dois la mettre dans le titre. (je suis débutante).donc ok pour la remarque.
  • La pour l'ecriture d'un flot c'est difficile, j'ai un mélange de float et int dans l'implémentation, je commence par le teste de chacun puis je vais voir comme procéder pour la suite.

:jap: Merci beaucoup HelloWorld

n°1107114
HelloWorld
Salut tout le monde!
Posté le 03-06-2005 à 15:39:14  profilanswer
 

les balises cpp c'est pour formatter ton code
 
code sans cpp
 

Code :
  1. code entouré de [ cpp ] [/ cpp ]


---------------
FAQ fclc++ - FAQ C++ - C++ FAQ Lite
n°1107147
d_imane
Posté le 03-06-2005 à 15:56:23  profilanswer
 

Code :
  1. voilà c'est réussi..!


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

  readFile()

 

Sujets relatifs
Equivalence HTML de readfile(' ');C: Readfile()
ReadFile / WriteFile en multiThreadheader Content-Disposition: attachment et readfile()
fopen ou readfileRécupérer le contenu d'un fichier distant. readfile(), include().
pb gestion du TimeOut avec ReadFileGérer les retours à la ligne avec des include ou readfile....
[PHP] mise à jour de site à l'aide de la fonction readfile() 
Plus de sujets relatifs à : readFile()


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