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 end
else if strtoint(p)>=Largo then
begin
m:='El Número de registro está fuera de rango.';
exit; 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; end;
end;
Saludos cordiales.