Convertion de fichier texte dans une boite de dialog

Description

Bon c une petite appli bebete qui transforme un fichier de points de type X Y Z
pour le rendre lisible par un autre programme via une boite de dialogue MFC.
Donc concretement pour chaque ligne X Y Z du fichier d'entrée le fichier de sortie sera de la forme
[PT_i]
1=X,Y,Z,0.0,0.0,0.0
DT1=0.0,0.0,0.0
RT1=0.0
RB1=0.0

Le prog fonctionne mais je vous previens, la fonction On_Save mélange les genres. avec les objets fstream et FILE

Source / Exemple :


void CDlg_textDlg::OnSave() 

FILE *fp;
int nFileLong;
double X,Y,Z;
	
UpdateData(TRUE); //Force data from Edit box to variable

CFileDialog m_ldFile(FALSE, "pud", NULL, OFN_HIDEREADONLY | OFN_OVERWRITEPROMPT, "PRELUDE files (*.pud)|*.pud|All files|*.*||");

	
if (m_ldFile.DoModal() == IDOK)  //Start file dlg box
{
int NumberOfLines=0;
m_sOutputFileName=m_ldFile.GetPathName(); //Get file name
m_fileOut=m_sOutputFileName;
fstream input(m_sFileName,ios::in);
fstream output(m_sOutputFileName,ios::out);
nFileLong = m_stringIn.GetLength();      //Length of text in Edit box
        
NumberOfLines = nFileLong/(3*sizeof(double)); //BEURK!!!
		
for (int i=1;i<=NumberOfLines;i++)
{
input>>X>>Y>>Z;
output<<"[PT_"<<i<<"]"<<
"\nn=1"<< "\n1="<<X<<","<<Y<<","<<Z<<",0.0,0.0,0.0"<< "\nDT1=0.0,0.0,0.0"<<
"\nRT1=0.0"<<
"\nRB1=0.0"<<endl;
}
output.close();
input.close();

//après fstream input( xxx),fp=fopen(xxx)
fp=fopen(m_sOutputFileName,"rb");   //Open file for reading
     
fseek(fp,0,SEEK_END);		 	    //Go to file end 
nFileLong=ftell(fp);			    //Get length
char* sText = new char[nFileLong+1];//reserve string space
fseek(fp,0,SEEK_SET);               //Go to file start 
int j=fread(sText,1,nFileLong,fp);  //Read the characters
sText[j]=0;                         //Set string terminating null
m_stringOut=sText;                  //Put text in Edit box's variable
m_string=m_stringOut;
fclose(fp);  

UpdateData(FALSE);
}

}

Codes Sources

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.