Funcion WriteAllText

Moderador: ivancp

Preguntas y respuestas sobre programacion en Windows con Visual C++

Funcion WriteAllText

Notapor i52camam » Jue Oct 06, 2011 1:44 pm

Hola!! Me gustaría saber si es compatible la función WriteAllText en un proyecto MFC.

Si no es así ¿qué otras opciones hay para guardar en un fichero de texto? Ya que tampoco se puede usar:

Código: Seleccionar todo
  1. escritura << "\n";



Muchas Gracias!!
i52camam
Novato
Novato
 
Mensajes: 18
Registrado: Lun Mar 14, 2011 7:04 am


Re: Funcion WriteAllText

Notapor ivancp » Jue Oct 06, 2011 3:08 pm

Si deseas guardar algún dato (ej. texto) en un archivo de texto desde Visual C++?

Acabo de hacer una prueba:

Código: Seleccionar todo
  1. #include <iostream>

  2. #include <fstream>

  3. using namespace std;

  4.  

  5. int main () {

  6.   ofstream myfile;

  7.   myfile.open ("example.txt");

  8.   myfile << "Writing this to a file.\n";

  9.   myfile.close();

  10.   return 0;

  11. }



Y funciona...

Pero seguramente tu contexto es otro... haz la prueba y nos cuentas como te fue

Lo copie de http://www.cplusplus.com/doc/tutorial/files/
Imagen @latindev | Mi Blog
Por favor lee las reglas del foro
Avatar de Usuario
ivancp
Colaborador
Colaborador
 
Mensajes: 680
Registrado: Jue Sep 06, 2007 12:58 pm


Re: Funcion WriteAllText

Notapor i52camam » Dom Oct 09, 2011 12:48 pm

Creo que así no lo puedo hacer porque "ofstream" no me lo reconoce, creo que es porque es un proyecto MFC, aún incluyéndole las bibliotecas:

Código: Seleccionar todo
  1. #include <iostream>

  2. #include <fstream>



No funciona. He estado probando con la clase "CFile" :

Código: Seleccionar todo
  1. void Guardar::OnBnClickedGuardar()

  2. {      

  3.         SaveToFile();

  4. }

  5.  

  6. void Guardar::SaveToFile()

  7. {

  8.         CString nombre=_T("\D:\Write_File.dat");

  9.         CFile cfile;

  10.         cfile.Open(nombre , CFile::modeCreate | CFile::modeReadWrite);

  11.         char pbufWrite[100];

  12.         memset(pbufWrite, 'a', sizeof(pbufWrite));

  13.         cfile.Write(pbufWrite, 100);        

  14.         cfile.Flush();

  15. }



Pero ni siquiera me crea el archivo. He depurado el código, llama a las funciones y pasa por cada línea sin problema pero no hace nada.
i52camam
Novato
Novato
 
Mensajes: 18
Registrado: Lun Mar 14, 2011 7:04 am

Re: Funcion WriteAllText

Notapor ivancp » Dom Oct 09, 2011 7:54 pm

El nombre del archivo esta mal, seguramente debio ser asi:

"D:\\Write_File.dat"
Imagen @latindev | Mi Blog
Por favor lee las reglas del foro
Avatar de Usuario
ivancp
Colaborador
Colaborador
 
Mensajes: 680
Registrado: Jue Sep 06, 2007 12:58 pm

Re: Funcion WriteAllText

Notapor i52camam » Lun Oct 10, 2011 1:14 pm

Efectivamente!! Ya funciona correctamente al poner "\\".
i52camam
Novato
Novato
 
Mensajes: 18
Registrado: Lun Mar 14, 2011 7:04 am

Re: Funcion WriteAllText

Notapor i52camam » Lun Oct 10, 2011 2:13 pm

Hola de nuevo!! He conseguido hacer una función para guardar en un archivo txt:

Código: Seleccionar todo
  1. void CDlgResultados::SaveToFile()

  2. {

  3.         FILE *fichero;

  4.        

  5.         CString path= GetUserHomeDir() + _T("\\Write_File.txt");

  6.         CString cadena;

  7.         int tam=0;

  8.  

  9.         m_Edit.GetWindowText(cadena);

  10.  

  11.         fichero=fopen(CT2CA(path),"wb");

  12.  

  13.         tam=strlen(CT2CA(cadena));

  14.         fwrite(cadena,tam,2,fichero);

  15.         fclose(fichero);       

  16. }



Ahora me gustaría hacer una función para cargar ese mismo fichero que he guardado (tipo txt), pero al usar fread:

Código: Seleccionar todo
  1. fread(cadena,tam,2,fichero);   



Me pide como primer parámetro una variable de tipo void y "cadena" es de tipo CString, por lo tanto no sé como hacer para que me funcione.

Gracias.
i52camam
Novato
Novato
 
Mensajes: 18
Registrado: Lun Mar 14, 2011 7:04 am

Re: Funcion WriteAllText

Notapor ivancp » Lun Oct 10, 2011 7:27 pm

fread(&cadena,tam,2,fichero);
Imagen @latindev | Mi Blog
Por favor lee las reglas del foro
Avatar de Usuario
ivancp
Colaborador
Colaborador
 
Mensajes: 680
Registrado: Jue Sep 06, 2007 12:58 pm

Re: Funcion WriteAllText

Notapor i52camam » Mar Oct 11, 2011 11:03 am

Hola Ivan,

Efectivamente asi funciona pero creo que no comprendo bien la funcion y pongo mal los parametros o algo pasa ya que no me inserta el contenido del fichero en la cadena. Yo hice lo siguiente:

int tam = cadena.GetLength();
fread(&cadena,tam,1,theFile);

m_Edit.SetWindowText(cadena);

No muestra nada, y la cadena esta en blanco al comprobarlo poniendo puntos de interrupcion.
i52camam
Novato
Novato
 
Mensajes: 18
Registrado: Lun Mar 14, 2011 7:04 am

Re: Funcion WriteAllText

Notapor i52camam » Mar Oct 11, 2011 1:51 pm

Hola de nuevo,

He estado probando con la clase CFile:

Código: Seleccionar todo
  1. void CDlgResultados::LoadToFile()

  2. {

  3. CFile cfile;

  4.         cfile.Open(_T("C:\\Users\miguel\Write_File.txt"), CFile::modeCreate | CFile::modeReadWrite);   

  5. TCHAR pbufRead[100];

  6.         UINT nActual = 0;

  7.         cfile.Seek( 0, CFile::begin );

  8.         nActual = cfile.Read( pbufRead, sizeof( pbufRead ) );

  9.  

  10.         m_Edit.SetWindowText(pbufRead);

  11. }



Pero me inicializa la variable buffer a un valor indeterminado y por tanto no me lee bien. Además creo que la función "SetWindowText(pbufRead)" no muestra bien el texto si la variable no es CString.
i52camam
Novato
Novato
 
Mensajes: 18
Registrado: Lun Mar 14, 2011 7:04 am


    

Volver a Visual C++

¿Quién está conectado?

Usuarios navegando por este Foro: No hay usuarios registrados visitando el Foro y 0 invitados