FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
Problema con funcion VOID
Es un poco rústica la función, pero me sale un problema.. que es el siguiente..
"Access violation at address 00401f59 in module 'SEPAF.exe'. Read of address 72745313" Lo que hace la funcion es ver si ese día tal persona cumple años y si es asi la agrega a un ComboBox... El codigo es el siguiente.. void cumpleaños_h() { Form1->ComboBox3->Clear(); TDateTime dia; AnsiString aux = dia.CurrentDate(); aux = aux.SubString(0,5); AnsiString año = dia.CurrentDate(); año = año.SubString(7,9); paciente p; fstream archi("C:/Pacientes.dat", ios::in | ios::binary | ios::app); archi.seekg(0, ios::beg); archi.read((char*)&p,sizeof(p)); while(!archi.eof()) { AnsiString aux1 = p.fecha_nac; AnsiString año1 = p.fecha_nac; aux1 = aux1.SubString(0,5); if(aux1 == aux){ AnsiString d; char z[40]; char x[3]; AnsiString r = ", "; char y[45]; AnsiString q = " ("; AnsiString t = ")"; strcpy(z,p.apellido); strcpy(y,p.nombre); strcpy(x,r.c_str()); strcat(z,x); strcat (z,y); año1 = año1.SubString(7,9); int años = StrToInt(año) - StrToInt(año1); AnsiString total = z+q+años+t; Form1->ComboBox3->Items->Add(total); } archi.read((char*)&p,sizeof(p)); } ¿Puede ser que sea problema de los "ios::" en el fstream? Desde ya muchas gracias! |
#2
|
||||
|
||||
fede, deberías mostrarnos la declaración de la estructura paciente y el formato del archivo pacientes.dat, para poder analizar porqué tienes ese error de memoria, que seguramente se debe a un puntero mal utilizado.
Esta parte del código puede resultar problemática por poder provocar un desbordamiento de buffer: Código:
strcpy(z,p.apellido); srcpy(y,p.nombre); strcpy(x,r.c_str()); strcat(z,x); strcat (z,y); |
#3
|
||||
|
||||
A falta de conocer la estructura paciente y como está organizado el archivo Pacientes.dat, considera que tu código se podría ir optimizando de esta manera:
Código:
void CumpleAnos() { WORD D_Hoy, M_Hoy, D_Cumple, M_Cumple, Year; DecodeDate(Now(), Year, M_Hoy, D_Hoy); paciente p; fstream archi("C:/Pacientes.dat", ios::in | ios::binary | ios::app); archi.seekg(0, ios::beg); archi.read((char*)&p,sizeof(p)); while(!archi.eof()){ TDate Nacimiento(p.fecha_nac); DecodeDate(Nacimiento, Year, M_Cumple, D_Cumple); if(M_Hoy == M_Cumple && D_Hoy == D_Cumple){ int edad = ((int)(Now() - Nacimiento)) / 365; String Total = String(p.apellido) + ", " + String(p.nombre); Total = Total + " (" + IntToStr(edad) + ") "; Form1->ComboBox3->Items->Add(Total); } archi.read((char*)&p,sizeof(p)); } } Saludos. Última edición por escafandra fecha: 14-11-2009 a las 01:11:38. |
#4
|
|||
|
|||
Código:
struct paciente { struct paciente { char apellido[50]; char nombre[50]; char sexo[50]; char edad[50]; char dni[50]; char fecha_nac[50]; char ciudad[50]; char provincia[50]; char direccion[50]; char telfijo[50]; char telcel[50]; char email[50]; char estado_civil[50]; char hijos[50]; char profesion[50]; char n_tajeta[50]; char ini_act[50]; char fin_act[50]; char importe_pago[50]; char forma_pago[50]; } y al final arreglé la funcion cambiando lo siguiente.. Código:
... ... fstream archi("C:/Pacientes.dat", ios::in | ios::binary | ios::app); archi.seekg(0, ios::beg); ... ... Código:
... ... fstream archi("C:/Pacientes.dat", ios::in | ios::binary ); // archi.seekg(0, ios::beg); ... ... MUCHAS GRACIAS ESCAFRANDA POR ESA OPTIMIZACION, PERO NO ME RECONOCE LA PALABRA "WORD" |
#5
|
||||
|
||||
WORD es un unsigned short:
Código:
typedef unsigned short WORD, PWORD; Prueba el ejemplo que te puse, yo no lo he podido probar ni compilar por desconocer la estructura paciente y el archivo de datos, pero creo que debe funcionar. Cita:
No se que compilador estás usando pero te diré que en el Builder 5 encontré y reparé un bug en la función Código:
template<class charT, class traits> basic_istream<charT, traits>& basic_istream<charT, traits>:: getline(char_type *s, streamsize n, char_type delim); Saludos. |
|
|
Temas Similares | ||||
Tema | Autor | Foro | Respuestas | Último mensaje |
problema con funcion!! | MOCOSO07 | HTML, Javascript y otros | 0 | 12-01-2009 16:39:40 |
Problema con una funcion | Alliance | Varios | 5 | 09-10-2008 02:38:32 |
Problema con declaración de función | vivamotos | C++ Builder | 1 | 25-04-2008 10:35:56 |
Problema con la funcion mail | JulioGO | PHP | 2 | 26-09-2005 11:24:15 |
problema al llamar una función | sgarrido | Varios | 3 | 27-07-2004 01:14:33 |
|