<table cellspacing="0" cellpadding="0" border="0" ><tr><td valign="top" style="font: inherit;">Hola a todos. A ver si alguno puede echarme una mano con el siguiente problemilla. He creado dos clases DifracData y Difractograma en las cuales se han de guardar los elementos de un fichero que tiene pares de puntos de información. He creado algunas funciones para ellas y me encuentro con el siguiente problema. Cuado cargo la información del fichero en la clase siempre considera como si estuviese vacia y no lo entiendo. A ver si alguno me puede dar una idea de por que.<br><br>Aquí os pongo el codigo:<br><br>#ifndef DIFRACTOGRAMA_H_INCLUDED<br>#define DIFRACTOGRAMA_H_INCLUDED<br><br><br>class DifracData {<br><br>    public:<br><br>    DifracData(double angulo, int cuentas, DifracData* ant = NULL, DifracData* sig = NULL) :<br>        Angle(angulo) , PSD(cuentas) , Anterior(ant) , Siguiente(sig)
 {}<br><br>    double Angle;<br><br>    int PSD;<br><br>    DifracData* Anterior;<br><br>    DifracData* Siguiente;<br><br>    friend class Difractograma;<br>};<br><br>class Difractograma {<br>   private:<br><br>    int nDataElements;<br><br>    DifracData* ActualDato;<br><br>    public:<br><br>    Difractograma(int nelement = 0) : nDataElements(nelement) {}<br><br>    ~Difractograma();<br><br>    void CargaDatos(char* nombre_archivo);<br><br>    bool Vacia();<br><br>    void Siguiente();<br><br>    void Anterior();<br><br>    void Ultimo();<br><br>    void Primero();<br><br>    void InsertarAlFinal(double angulo, int cuentas);<br><br><br>};<br><br>#endif //
 DIFRACTOGRAMA_H_INCLUDED<br><br><br>#include "includes.h"<br><br>Difractograma::~Difractograma(){<br><br>}<br><br>bool Difractograma::Vacia(){<br>    return ActualDato == NULL;<br>}<br><br>void Difractograma::Siguiente(){<br>    if(ActualDato) ActualDato = ActualDato->Siguiente;<br>}<br><br>void Difractograma::Anterior(){<br>    if(ActualDato) ActualDato = ActualDato->Anterior;<br>}<br><br>void Difractograma::Ultimo(){<br>    while(ActualDato && ActualDato->Siguiente != NULL) Siguiente();<br>}<br><br>void Difractograma::Primero(){<br>    while(ActualDato && ActualDato->Anterior != NULL) Anterior();<br>}<br><br>void Difractograma::InsertarAlFinal(double angulo, int cuentas){<br>    DifracData* nuevo;<br><br>    if(Vacia()){MessageBox(NULL,"entre en vacio","Error",MB_OK);<br>        nuevo =
 new DifracData(angulo, cuentas);<br>        ActualDato = nuevo;<br>        nDataElements = 1;<br>    }else{<br>        Ultimo();<br>        nuevo = new DifracData(angulo, cuentas, ActualDato);<br>        nDataElements++;<br>    }<br>}<br><br>void Difractograma::CargaDatos(char* nombre_archivo){<br>    char linea[80];<br>    char numero[40],numero1[40];<br><br>    FILE* fichero = fopen(nombre_archivo,"r");<br><br>    if(fichero != NULL){<br>       while( !feof(fichero) ){<br><br>           char enter;<br><br>           fscanf(fichero, "%[^\n]",
 linea);<br>           fscanf(fichero, "%c", &enter);<br><br>           int i = 0,j =0;<br><br>           while(linea[i]!=','){<br>               numero[i] = linea[i];<br>               i++;<br>           }<br><br>           numero[i] = '\0';<br>           i++;<br><br>           while(linea[i]!=','){<br>               numero1[j] =
 linea[i];<br>               i++;<br>               j++;<br>           }<br><br>            numero1[j] = '\0';<br><br>            InsertarAlFinal(atof(numero),atoi(numero1));<br><br>            sprintf(linea,"Los valores leidos son Angulo = %lf y PSD = %d numero de elementos %d",ActualDato->Angle,ActualDato->PSD,nDataElements);<br>            Siguiente();<br><br>           MessageBox(NULL,linea,"Error",MB_OK);<br>          
 }<br>       }else MessageBox(NULL,"El fichero seleccionado no pudo cargarse","Error",MB_OK);<br><br>    fclose(fichero);<br>}<br><br></td></tr></table><br>