• Jueves 28 de Marzo de 2024, 10:41

Mostrar Mensajes

Esta sección te permite ver todos los posts escritos por este usuario. Ten en cuenta que sólo puedes ver los posts escritos en zonas a las que tienes acceso en este momento.


Temas - valentz

Páginas: [1]
1
Visual C++ / Problema con CStdioFile::WriteString
« en: Lunes 23 de Abril de 2012, 11:31 »
Hola, estoy empezando con visual c++ autodidácticamente. He hecho un mini programa en el cual se puede elegir el nombre de un color de una lista o añadir un nuevo color a la lista. Para ello guardo el nuevo color en un archivo. He utilizado el siguiente código
Código: C++
  1.  void CMyFileDlg::OnSave()
  2. {
  3.         // TODO: Add your control notification handler code here
  4.        
  5.         if(m_NewColor)
  6.         {
  7.                 //-------------------------------------------------------------
  8.                 // Writing the New Colors on the file color.dat
  9.                 //-------------------------------------------------------------
  10.  
  11.                 //Creating a storing archive of type CFile / CStdioFile: file
  12.                 CStdioFile file;  
  13.  
  14.                 //Opening the file
  15.                 file.Open("color.dat", CFile::modeCreate | CFile::modeNoTruncate | CFile::modeReadWrite | CFile::typeBinary);
  16.  
  17.                 file.SeekToEnd(); // Moving the cursor to the End of the file.
  18.  
  19.                 UpdateData(TRUE); // transferring the content of the edit boxes to the variables
  20.  
  21.                 //Writing the context of each variable
  22.                 //file.WriteString(m_IdColor);
  23.                 //file.WriteString("\b ");
  24.                 file.WriteString(m_ColorName);
  25.                 file.WriteString("\n \n");
  26.  
  27.                 //Closing the file
  28.                 file.Close();
  29.  
  30.                 UpdateData(FALSE);
  31.  
  32.                 AfxMessageBox("Datos guardados correctamente!");
  33.  
  34.         }
  35.        
  36. }

y funciona correctamente si solamente escribo el nombre del color pero si quiero escribir también un número para cada color a través de la variable int m_IdColor me genera el siguiente error:

error C2664: 'CStdioFile::WriteString' : cannot convert parameter 1 from 'int' to 'LPCTSTR'

¿Cómo puedo hacer para que me escriba en el archivo la variable int m_IdColor?  Quiero además que se genere un espacio entre las dos variables m_IdColor y m_ColorName. Si utilizo file.WriteString("\b"); entonces me produce   entre los valores de las dos variables. Entonces ¿Como crearíais un espacio entre los dos datos de las dos variables?

En la función Open indico el nombre del archivo a abrir “color.dat” que lo genera en el mismo directorio donde se encuentra el ejecutable, ¿se puede indicar también el directorio donde se encuentra? ¿Se puede también dar la opción de elegir el directorio donde crear el archivo? Si es así ¿cómo se haría?

Páginas: [1]