<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>