Foros del Web » Programación para mayores de 30 ;) » C/C++ »

Ayuda c++ Builder

Estas en el tema de Ayuda c++ Builder en el foro de C/C++ en Foros del Web. ¡¡Ayuda!! Callejon sin salida no puedo continuar el programa que estoy haciendo sin solucionar el problema que tengo para guardar en un archivo los atributos ...
  #1 (permalink)  
Antiguo 28/03/2007, 08:10
 
Fecha de Ingreso: marzo-2007
Mensajes: 29
Antigüedad: 17 años, 7 meses
Puntos: 0
Ayuda c++ Builder

¡¡Ayuda!! Callejon sin salida
no puedo continuar el programa que estoy haciendo sin solucionar el problema que tengo para guardar en un archivo los atributos miembros de una clase (formada pos clases anidades).Para aclarar mi problema pondre un codigo ejemplo:

//Incluyo Clases creadas por mi
#Include MisClases

//Creo una Clase
class TCLASE
{
private
Ansistring Variabe;
MisClases OtrasVariables; //Variables de otras clases
........
public
AsignarVariable(AnsiString Var); //Asigno valor a Varible
AnsiString LeerVariable(); //Recupero Variable (Metodo funciona)
.......................
GuardarClase(); //Metodo donde Creo el Archivo
LeerClase(); // Metodo leer archivo

} Clase;

TCLASEa:GuardarClase()
{

//Abro el Archivo para guardar
ofstream ArchClas(NombreArchivo,ios:ut|ios::binary);

//Guardo los Equipos en el fichero de la Clase
ArchClas.write((char *) &Clase, sizeof(Clase));

//Cierro el Archivo
ArchClas.close();

}

TClase::LeerClase()
{
//Abro el Archivo para Leer
ofstream ArchClas(NombreArchivo,ios::in|ios::binary);

//Guardo los Equipos en el fichero de la Clase
ArchClas.read((char *) &Clase, sizeof(Clase));

//Cierro el Archivo
ArchClas.close();

}

Cuando Guardo el Archivo me crea el Archivo con la estructura de las variables miembro de la clase (arrays,Ansistring...) o al menos eso creo, pero no guarda los valores que tenia en el momento de almacenarlo.

Gracias
  #2 (permalink)  
Antiguo 28/03/2007, 11:18
 
Fecha de Ingreso: noviembre-2003
Ubicación: Mexico
Mensajes: 1.081
Antigüedad: 21 años
Puntos: 7
Re: Ayuda c++ Builder

que tal,

nunca habia intentado guardar en un archivo clases/structuras que tuvieran metodos. Siempre lo habia hecho con puras variables.

por ejemplo:
Código:
class CVector3
{
public:
	float x,y,z;
};

CVector3 vertexData;

void Guardar()
{
  ofstream myfile ("fdw.txt");
  myfile.write( (char*) &vertexData, sizeof(CVector3);	
  myfile.close();
}
y eso funciona bien tanto para leer como para guardar.
pero probe agregandole un metodo......
Código:
class CVector3
{
public:
	float x,y,z;
        void dumb();
};
Y tambien funciona.... aparentemente los ignora....

A simple vista, parece que tu codigo deberia de funcionar,
estas seguro de estar asignando los valores antes de llamar al metodo de guardar?

Por que no pruebas borrando todo lo de la clase excepto la primera variable (Ansistring Variabe) y luego la mandas a imprimir para estar seguro de estar haciendolo bien.....

saludos,
  #3 (permalink)  
Antiguo 28/03/2007, 15:38
 
Fecha de Ingreso: marzo-2007
Mensajes: 29
Antigüedad: 17 años, 7 meses
Puntos: 0
Re: Ayuda c++ Builder

En primer lugar muchas gracias por responderme.Referente a tu mensaje y empezando por el final si he probado ha trabajar solo con una variable AnsiString a la que le asigno un valor mediante un metodo miembro (He comprobado si la asignacion habia sido correcta recuperando el valor mediante otro metodo miembro y mostrandolo funcionando).Respecto ha si se podia guardar un objeto que contenga metodos, tengo entendido que de el objeto, ofstream guarda unicamente la variables.
De tu codigo al mio veo tres diferencias:
-Declaras las variables como publicas
-guardas las variables en un archivo de texto
-utilizo ofstream binary

Voy Hacer pruebas con estos tres parametros haber si logro hacerlo funcionar
y te cuento (Si se te ocurre algo mandamelo)

Otra vez Garcias Chao.
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 13:47.