Rapatrier des données d'un fichier avec Borland C++
3nTiC
Messages postés3Date d'inscriptionmardi 2 mai 2006StatutMembreDernière intervention 1 juin 2006
-
30 mai 2006 à 13:55
dragonjoker59
Messages postés92Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention23 septembre 2015
-
26 juil. 2006 à 10:20
Je suis en stage actuellement, et j'aborde sur le tas le C++ avec de bonne base en C.
Dans mon projet, je dois enregistrer les données d'un tableau(qui servent à tracer une courbe) dans un fichier .txt
Mais qui dit enregistrement des données, dit rapartriement de celle-ci à un moment ou un autre.
Mon problême se situe à cette endroite. Je ne sais pas comment faire pour récupérer les données, et rapatrier dans un tableau, pour ensuite pouvoir afficher le graphique(en fin de compte l'opération inverse de l'enregistrement!).
Le code pour l'enregistrement est le suivant:
// Chaines de caractères utilisées pour la sauvegarde des fichiers :
chaine1="---> Fichier de Sauvegarde des données spectrales <---";
chaine2=("\r\n---> "+DateToStr(Date())+" -- "+TimeToStr(Time())+" <---");
chaine3="\r\n\r\n[Calibration du Spectromètre]";
chaine4=("\r\nPremier Coefficient : "+FloatToStr(coeff1));
chaine5=("\r\nDeuxième Coefficient : "+FloatToStr(coeff2));
chaine6=("\r\nTroisième Coefficient : "+FloatToStr(coeff3));
chaine7=("\r\nNm de Départ : "+FloatToStr(onde_depart));
chaine8="\r\n\r\n[Options Supplémentaires]";
chaine9=("\r\nTemps d'intégration : "+IntToStr(tps_integ));
chaine10=("\r\nNombre de Spectres par Acquisition : "+IntToStr(average));
chaine11=("\r\nPlage de la moyenne mobile : "+IntToStr(boxcar));
AnsiString temp="[Nm]";
temp=temp+("\t[Intensité1]\t[Intensité2]\t[Intensité3]\t[ValeurMoyenne]");
chaine12="\r\n\r\n"+temp;
chaine13="--> Fin <--";
// Sauvegarde de la configuration et des données spectrales dans un fichier :
TFileStream *fichier_bru;
fichier_bru=new TFileStream(fichier/*+IntToStr(1)+"-"+IntToStr(nb_acq)*/+".bru",fmCreate);
fichier_bru->Write(chaine1.c_str(),chaine1.Length());
fichier_bru->Write(chaine2.c_str(),chaine2.Length());
fichier_bru->Write(chaine3.c_str(),chaine3.Length());
fichier_bru->Write(chaine4.c_str(),chaine4.Length());
fichier_bru->Write(chaine5.c_str(),chaine5.Length());
fichier_bru->Write(chaine6.c_str(),chaine6.Length());
fichier_bru->Write(chaine7.c_str(),chaine7.Length());
fichier_bru->Write(chaine8.c_str(),chaine8.Length());
fichier_bru->Write(chaine9.c_str(),chaine9.Length());
fichier_bru->Write(chaine10.c_str(),chaine10.Length());
fichier_bru->Write(chaine11.c_str(),chaine11.Length());
fichier_bru->Write(chaine12.c_str(),chaine12.Length());
for (int col=0;col<2048;col++)
{
AnsiString result="\r\n";
result=result+FloatToStr(lambda[col])+'\t';
for(int li=0;li<nb_acq;li++)
{
result=result+FloatToStr(intensite[li][col])+'\t';
}
result=result+FloatToStr(valmoy[col]);
fichier_bru->Write(result.c_str(),result.Length());
}
fichier_bru->Write(chaine13.c_str(),chaine13.Length());
delete fichier_bru;
avec lambda[] un tableau de 2048 flottant, valmoy[] idem, et intensite[][] un tableau 2D à ligne variant, et 2048 colonnes.
Merci d'avance pour votre aide!
A voir également:
Rapatrier des données d'un fichier avec Borland C++
dragonjoker59
Messages postés92Date d'inscriptionsamedi 26 mars 2005StatutMembreDernière intervention23 septembre 2015 26 juil. 2006 à 10:20
Avec les TFileStream je ne sais pas, par contre moi j'utilise le bon vieux FILE qui se trouve dans stdio, et la ce n'est pas dur car il me semble en plus que tu écris ton fichier ligne par ligne (avec tous ces petits '\n').
string FileName = "c:\bidule.txt";
FILE *_File = fopen(FileName.c_str(), "r");
string ligne;
// tant qu'il y a une ligne à lire dans le fichier
while ((ligne = fgets(tmp, 10000, _File)) != NULL)
{
// toutes les actions sur la ligne lue dans le fichier (récupération de ce qui t'y intéresse)
// ...
// ...
}