Ver Mensaje Individual
  #1  
Antiguo 31-07-2013
NEG1414 NEG1414 is offline
Miembro
 
Registrado: mar 2007
Posts: 177
Reputación: 18
NEG1414 Va por buen camino
Imposible.. no encuentro el error

Buenas..

LLevo varios dias intentando encontrar el porque de un error (el valor de una variable varia al inicializar una clase sin razon aparente).... y me es imposible ... He reducido a la minima expresion el codigo y que siga dando el problema para hacerlo mas comprensible.
Cita:
Class TClase1
{
private :
TStringList *Lista;
public :
TClase1();
{
Lista = new TStringList;
}
}


Class TClase2 (#Include "Clase1.h")
{
private:
TClase1 ClaseHija;
public:
TClase2()
{
struct ffblk ffblk; //Obiamente en el programa original se lee un archivo en esta version reducida solo incluyo esta linea
suficiente para hacer saltar el error
}

}

class TDatos
{
private:

struct SRegistro
{
bool a;
bool b;
unsigned short Num;
};

typedef SRegistro TRegistro

struct SArchivo
{
char Nombre [16];
TRegistro ListaRegistros [100];
};


typedef SArchivo TArchivo;

public:

typedef SArchivo TArch;
TDatos()
{
}

TDatos::Archivo *TDatos::LeerDatos()
{
TDatos A;
A.ListaRegistro[12].a = true
A.ListaRegistro[12].b = false;
A.ListaRegistro[12].Num = 0;

return &A
}


PROGRAMA PRINCIPAL

#Include Clase2
#Include Datos
......
.....
TDatos *BDatos = new TDatos();
TDatos::TArch LeLosDatos;
LeLosDatos = BDatos->LeerDatos();

TClase2 *ClaseSegunda = new TClase2()
Una vez Leidos, los datos obtenidos son los correctos

LeLosDatos.ListaRegistro[12].a = true
LeLosDatos.ListaRegistro[12].b = false;
LeLosDatos.ListaRegistro[12].Num = 0;

El problema surge cuando inicializo ClaseSegunda.. los Valores de LeLosDatos se modifican sin razon aparente.

He comprobado que:

- Si Elimino de Clase 1 el TStringList *Lista NO DA ERROR
- Si elimino de Clase1 en el Constructor struct ffblk ffblk NO DA ERROR
- Si en la estructura struct SArchivo de Tclase2 sustituyo TRegistro ListaRegistros [100];
por TRegistro ListaRegistros; NO DA ERROR

Supongo que es error al declarar punteros o estructuras que solapan posiciones de memoria pero no lo veo NECESITO AYUDA..

Gracias





}
Responder Con Cita