Ver Mensaje Individual
  #4  
Antiguo 18-12-2006
runnerfrog runnerfrog is offline
Registrado
 
Registrado: dic 2006
Posts: 3
Reputación: 0
runnerfrog Va por buen camino
Muchas gracias por la gran disposicion que has tenido, Lepe.
Igualmente estaré pasando muy mal los parámetros de una unit a otra, porque sigue buscando numeros de registro; en ambos casos con el archivo binario abierto, recibo un Stack Overflow cuando hago una búsqueda de números bajos, como los nº de registro ordinales del record. Si busco por DNI (números superiores a la cantidad de registros) "El Número de registro está fuera de rango"; si modifico el codigo para buscar nombres o apellidos "EConvert error (nombre ingresado) no es un integer valido". Sigue buscando numeros de registro.

( Project Project1.exe raised exception class EStackOverflow with message 'Stack overflow'. )

El codigo actual:

Código:
Código Delphi [-]
--- UNIT1:

procedure TForm1.BuscarSocio1Click(Sender: TObject);
                            var i:string; c:Socio; mensaje:string;
begin
 i:=Edit1.Text;
 z.BuscarSocio(i,c,mensaje);

 If mensaje='OK' then
      begin
       Edit2.Text:=c.Apellido;
       Edit3.Text:=c.Nombres;
       Edit1.Text:=IntToStr(c.DNI);
       Edit4.Text:=IntToStr(c.dn);
       Edit5.Text:=IntToStr(c.mn);
       Edit6.Text:=IntToStr(c.an);
      end
                  else
       ShowMessage(mensaje);
end;


--- UNIT2:

procedure TManejoSocios.BuscarSocio(p:string;var c:Socio; var m:string);
   var Largo:word; b:integer;
   begin
   {$I-} Largo:=FileSize(archi);{$I+};
    If (IOResult<>0)
      then
       begin
     m:='Problemas con el archivo. Está creado o abierto ?';
     exit // sale del procedure
       end
      else  if strtoint(p)>=Largo then
       begin
         m:='El Número de registro está fuera de rango.';
         exit; // sale del procedure
         end;

m := 'OK';
b:=0;
while m = 'OK' do
begin
 inc(b);
 BuscarSocio( inttostr(b), c,m);
 if m = 'OK' then
 if c.Nombres = p then
   break; // salimos del bucle porque lo hemos encontrado.
end;
end;
Saludos cordiales.
Responder Con Cita