Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

 
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 18-12-2006
runnerfrog runnerfrog is offline
Registrado
 
Registrado: dic 2006
Posts: 3
Poder: 0
runnerfrog Va por buen camino
object pascal - buscar en un record por contenido de un edit.

Hola, quería consultarlos por mi siguiente limitación: puedo hacer una búsqueda de campos personales por número de orden en un record guardado en archivo binario (usando seek), pero no sé cómo hacer la búsqueda por un campo personal, como nombre o documento, y que devuelva los demás datos de la persona en el record (tampoco entiendo cómo borrarlos). Tengo la parte que importa del código O.O. (de object pascal) dispuesto así:

primera unit:


Código:
Código Delphi [-]
unit Unit1;

interface
uses
  [...] unit2

var
  Form1: TForm1;
  z:TManejoSocios;

procedure TForm1.FormCreate(Sender: TObject);
begin
  z:=TManejoSocios.Create;
end;

procedure TForm1.BuscarSocio1Click(Sender: TObject);
                            var i:word; c:Socio; mensaje:string;
begin
 i:=StrToInt(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;

...y lo que importa en la segunda unidad:

Código:
Código Delphi [-]
unit Unit2;

interface
 uses SysUtils;
 Type
 Socio= Record
  Apellido, nombres: string[20];
  DNI:longint;
  DN,MN,AN:integer;
         end;
 TManejoSocios=class
   private
     Archi:File of Socio;
   public

     procedure BuscarSocio(p:longint; var c:Socio; 
 end;

implementation

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

Como dije esto sirve para buscar por número de ingreso al record, pero no se me ocurre como llenar el edit1 con un apellido, nombre o dni y que rellene los demas edits con todos los datos correspondientes, actualmente logro esto sólo al ingresar el número de orden del record en el edit1.

Saludos a todos, feliz navidad, y disculpen la longitud, ofuscación del código e ignorancia personal.
Responder Con Cita
 



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
como usar object pascal y gtk Lionheart OOP 6 09-12-2005 19:31:08
manual de excepciones de object pascal para free pascal??? Garion OOP 3 27-05-2005 00:42:29
error couldn't perform the edit because another user changed the record marcelofabiani Conexión con bases de datos 3 25-01-2005 01:55:11
¿Object Pascal para todo? ReigDidion OOP 10 12-02-2004 08:28:07
que significa RECORD,OBJECT OR CLASS REQUIRED cesarjbf Varios 2 07-07-2003 14:07:20


La franja horaria es GMT +2. Ahora son las 17:15:03.


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