Lecture d'un fichier

Fermé
greg80 - 5 mai 2009 à 11:34
 greg80 - 5 mai 2009 à 16:00
Bonjour,
dans le cadre d'un stage, je doit compléter un logiciel avec visual c++ 6.
Seulement voilà depuis quelques jours je suis confronté un problème que je n'arrive pas à résoudre. Je doit récupérer les données d'un fichier pour les charger dans une ListCtrl.

Le fichier est de la forme :
50000;-6.205;5.204;7.6999;5.0125
60000;2.0147;-6.254;5.0012;-9.0123
Le fichier comporte 9 colonnes et environ 100 lignes!

Est-ce que quelqu'un aurais une solution à apporter à mon problème.

Pour info je vous joint le code que j'ai déjà tappé :

bool b_result = true;
char format[7];
CString str,str_tmp;
char delim = ';';

long double freq,imped1,adapt1;
long double imped2,adapt2;
long double imped3,adapt3;
long double imped4,adapt4;

m_list_carac_boite_antenne.DeleteAllItems();

CWinApp * theApp = AfxGetApp();
if(theApp)
{
str_tmp = theApp->GetProfileString("SEPARATEURS_CSV","CHAMP",";");
delim = str_tmp.GetAt(0);
}

sprintf(format,"%s%c%s","%lf",delim,"%lf");
CStdioFile fileBA;
if(!fileBA.Open((LPCTSTR)strFileBA,CFile::modeRead))
{
AfxMessageBox("impossible d'ouvrir le fichier "+strFileBA);
return false;
}
else
{
while(fileBA.ReadString(str))
{
if(sscanf((LPCTSTR)str,format,&freq,&imped1,&adapt1,&imped2,&adapt2,&imped3,&adapt3,&imped4,&adapt4) == 2)
{
str_tmp.Format("%1.lf",freq);
m_list_carac_boite_antenne.InsertItem(m_list_carac_boite_antenne.GetItemCount(),str_tmp);
str_tmp.Format("%1.4lf",imped1);
m_list_carac_boite_antenne.SetItemText(m_list_carac_boite_antenne.GetItemCount() - 1,1,str_tmp);
str_tmp.Format("%1.3lf",adapt1);
m_list_carac_boite_antenne.SetItemText(m_list_carac_boite_antenne.GetItemCount() - 2,2,str_tmp);
str_tmp.Format("%1.4lf",imped2);
m_list_carac_boite_antenne.SetItemText(m_list_carac_boite_antenne.GetItemCount() - 3,3,str_tmp);
str_tmp.Format("%1.3lf",adapt2);
m_list_carac_boite_antenne.SetItemText(m_list_carac_boite_antenne.GetItemCount() - 4,4,str_tmp);
str_tmp.Format("%1.4lf",imped3);
m_list_carac_boite_antenne.SetItemText(m_list_carac_boite_antenne.GetItemCount() - 5,5,str_tmp);
str_tmp.Format("%1.3lf",adapt3);
m_list_carac_boite_antenne.SetItemText(m_list_carac_boite_antenne.GetItemCount() - 6,6,str_tmp);
str_tmp.Format("%1.4lf",imped4);
m_list_carac_boite_antenne.SetItemText(m_list_carac_boite_antenne.GetItemCount() - 7,7,str_tmp);
str_tmp.Format("%1.3lf",adapt4);
m_list_carac_boite_antenne.SetItemText(m_list_carac_boite_antenne.GetItemCount() - 8,8,str_tmp);
}
}
fileBA.Close();
}
return b_result;
}


Ce bout de code me permet de lire uniquement les deux premières colonnes (sur toute les lignes), mais en revanche il me sort n'importe quoi sur les autres colonnes.
A voir également:

2 réponses

Ca a été donné (en C et C++) de nombreuses fois sur le groupe de prog windows :https://groups.google.com/forum/?hl=fr#!forum/fr.comp.os.ms-windows.programmation
0
Merci pour le lien sauf que je n'ai rien trouvé qui correspondait réellement à mes besoins.
0