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));
}
}
En lugar de usar un fstream puedes usar cualquier otro sistema de manejo de ficheros. Tu decides lo que tienes que hacer.
Saludos.