[C con Clase] Problema Usando Ficheros.

Juan Antonio López Riquelme jalr43 en hotmail.com
Mar Dic 12 02:05:59 CET 2006


Gracias Steven,
 
efectivamente era ese el fallo. De todos me estoy planteando si trabajar con ficheros con esa clase o bien usar las funciones del API CreateFile, ReadFile, etc. Seguramente usaré estas últimas.
 
Un saludo,
Juan Antonio.
 



> Date: Sun, 10 Dec 2006 18:14:07 -0500> From: vze266ft en verizon.net> To: cconclase en listas.conclase.net> Subject: Re: [C con Clase] Problema Usando Ficheros.> > Hola Juan Antonio,> > Juan Antonio wrote:> > Hola,> > > > estoy programando un juego en el que también uso ficheros para> > guardar datos. Estoy programando con el API de Windows y con DEV-C++.> > Al comienzo de mi fichero principal añado el include para poder> > manejar archivos:> > > > #include <windows.h>> > //#include <stdio.h>> > #include <fstream>> > #include "Ids.h"> > > > Cuando se produce el mensaje WM_CREATE es cuando quiero abrir el> > archivo y operar con el:> > > > case WM_CREATE:> > ifstream fentrada("Datos.dat", ios::in | ios::binary);> > > > Tal y como está ahora con el include de fstream me lanza al compilar> > que no reconoce ifstream:> > > > ifstream' undeclared (first use this function)> > > > si añado el,> > > > using namespace std;> > > > debajo de los includes obtengo lo siguiente:> > > > crosses initialization of `std::ifstream fentrada'> > > > Efectivamente, necesitas indicar el espacio con nombre 'std'. El otro > problema que tienes es que instancias un objeto dentro de un > 'switch/case' sin que tal objeto pertenezca a un bloque de ejecución. > Esto es, escribiste lo siguiente:> > case WM_CREATE:> ifstream fentrada( "Datos.dat", ios::in | ios::binary );> ...> > Cuando deberías haber escribito:> > case WM_CREATE:> {> ifstream fentrada( "Datos.dat", ios::in | ios::binary );> ...> }> > > Ahora bien, si vas a usar este objeto exclusivamente bajo el mensaje > 'WM_CREATE', entonces no hay ningún problema. Sin embargo, si necesitas > acceder a este objeto bajo otros mensajes, entonces deberías instanciar > el objeto localmente a la función. Debido al comportamiento de esta > función, tal objeto se instanciaría repetidamente, por lo que sugiero > declararlo estáticamente. Esto es,> > LRESULT CALLBACK WindowProcedure( HWND hwnd, UINT msg, WPARAM wParam, > LPARAM lParam )> {> static std::ifstream fentrada( "Datos.dat", ios::in | ios::binary );> > switch( msg )> {> ...> }> > return 0;> }> > > Espero haber aclarado el asunto.> > Steven> > > > > _______________________________________________> Cconclase mailing list> Cconclase en listas.conclase.net> http://listas.conclase.net/mailman/listinfo/cconclase_listas.conclase.net
_________________________________________________________________
¡Ya está aquí Windows Live Spaces! Ahora podrás crear fácilmente tu propio sitio Web.
http://spaces.live.com/signup.aspx
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://listas.conclase.net/pipermail/cconclase_listas.conclase.net/attachments/20061212/8cfa1040/attachment.html>


Más información sobre la lista de distribución Cconclase