Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Otros entornos y lenguajes > C++ Builder
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 10-06-2006
gandalf_27 gandalf_27 is offline
Miembro
 
Registrado: abr 2006
Posts: 21
Poder: 0
gandalf_27 Va por buen camino
Sigo sin entender el error...

Esto es lo que declaro en el Form1: Es decir, si se elije esta opcion...

//////////////////////////////////////////

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();
if (strcmp(Reg.ApeNom,"")!=g)
{
cont++;
Arr[cont]=Reg;
}
}
cont--;

}

/////////////////////////////////////////

void Apellido()
{
int i,j,P;

Verificar(P);
if (P!=1)
{
Aseguados=fopen("C:\\Asegurados.dat","a+b");
Form1->Hide();
Form7->Label1->Caption=("Ingrese Apellido a buscar");
Form7->Edit1->Text;
Form7->Edit1->Clear();
Form7->Edit1->Visible=true;
Form7->Show();
Form7->Edit1->SetFocus();
i=0;
Ap(Arre,i);
Ordenar(Arre,i);
Mostrar(Arre,i);
fclose(Asegurados);
}
}
/////////////////////////////////////////////

Y en el Form7, que es donde se va a producir la busqueda....

if (Form1->RadioGroup1->ItemIndex==4)
{
Edit1->Clear();
Edit1->Visible = true;
Edit1->Enabled = true;
Form7->Edit1->Clear();
Form7->Show();
if (Form7->Edit1->Text=="-1")
ShowMessage ("No se acepta campo vacío. Ingrese una opcion");
else
{
AnsiString g;
g=Form7->Edit1->Text;
strcpy(nom,g.c_str());
while (!(feof(Asegurados))&& (i<=tam))
{
fread(&Reg,sizeof(Reg),1,Asegurados);
if (nom==Reg.ApeNom)
{
i=i+1;
Arre[i]=Reg;
}
}
if (i>0)
{
if (i>1)
i--;
Ordenar(Arre,i);
Muestra (Arre,i);
Form7->Edit1->Clear();
}

//////////////////////////////////////////////////

Por que...al cambiar del Form1 al Form7, es dcir en ese cambio de ventana me dice que no se puede convertir String en Double...Sigo sin entender....Algiuen detecta mi error?????Desde ya...muchas gracias
Responder Con Cita
  #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
Poder: 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
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Entender lo que pasa con mis datos IVAND Conexión con bases de datos 6 03-02-2006 14:23:53
Entender una sentencia Renees Varios 5 02-09-2005 19:35:01
Otro error para conectarme como cliente, sigo son conectarme :( Lore Castillo Oracle 1 21-06-2005 02:16:14
sigo con MDI pablo OOP 2 27-02-2005 17:42:15
Sigo con mis preguntitas!!! Critter Varios 1 15-12-2004 21:44:05


La franja horaria es GMT +2. Ahora son las 09:19:40.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi