Ver Mensaje Individual
  #2  
Antiguo 11-06-2006
Avatar de OSKR
OSKR OSKR is offline
Miembro
 
Registrado: nov 2004
Ubicación: San Cristóbal/Táchira/Venezuela
Posts: 389
Reputación: 20
OSKR Va por buen camino
Código:
void Ap (RegAgenda Arr[], int &cont)
{ Agenda4=fopen("C:\\Asegurados.dat","a+b");
   fseek (Asegurados,0,SEEK_SET);//Busca el inicio del archivo
     cont=0;
     IniArre(Arr,tam);
     Ini_R(Reg);
    AnsiString g;
     while (!(feof(Asegurados)) && (cont<=tam))
           { fread(&Reg,sizeof(Reg),1,Asegurados);
              g=Form7->Edit1->Text.c_str(); //No es necesario esto ultimo
              if(strcmp(Reg.ApeNom,"")!=g)//Comparando un AnsiString con un
                                                    //número?
                { cont++;
                           Arr[cont]=Reg;
                }
   }
  cont--;
}
Esa estructura llamada Reg debería ser inicializada antes de escribir en ella con el fread, xq si esta fallase...como sabrías si escribió o no? al menos q lo iguales a un entero y ahí tendrás la cantidad de caracteres leídos,
Supón q nada se leyó....entonces Reg.ApeNom es nula, como está en una estructura y es un arreglo (no declarado como puntero...me imagino) entonces para saber si realmente hay algo allí sería
Código:
if(Reg.ApeNom[0]!=0) // o NULL o '\0'...igual
luego...si no es nula, puedes comparar con el AnsiString g así:
Código:
if(AnsiString(Reg.ApeNom)!=g)
ya q el operador == y el != están sobrecargados para el AnsiString
Código:
Arr[cont]=Reg;
Supongo q RegAgenda es una clase con el operador = sobrecargado para soportar estructuras como Reg, sino fuese así.....pues habría q copiar el contenido...y suponiendo q te fuera válido esa asignación yo lo haría así:
Código:
memcpy(&Arr[cont],&Reg,sizeof(Reg));
No he ojeado el resto del código, empieza por arreglar esta parte....otra cosa..con el Debugger puedes saber en q línea ocurrela excepción.
__________________
Los Estados Unidos parecen destinados por la Providencia para plagar la América de miserias a nombre de la libertad."
Simón Bolívar
(Carta al Coronel Inglés Patricio Cambell 05/08/1829).
Responder Con Cita