Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Control de Datos Repetidos Delphi. (Necesito Ayuda) (https://www.clubdelphi.com/foros/showthread.php?t=87825)

napsterk89 03-03-2015 03:09:19

Control de Datos Repetidos Delphi. (Necesito Ayuda)
 
Hola, tengo un problema, mañana rindo un final en Delphi y no hay forma de encontrarle solución a una parte del código, así que si alguien sabe algo lo agradecería.

Básicamente tengo que hacer un programa donde se cargan datos en un archivo y le realizo consultas. Es sobre venta de pasajes, ingreso nombre ,dni, importe, destino etc. Y luego puedo realizar consultas sobre los pagos y destinos.

Mi problema es con esta parte del enunciado:
Cita:

c) NO SE PUEDE pagar más de una vez un mismo destino contratado (CONTROLAR SI YA SE REALIZÓ EL PAGO. SI YA SE HIZO MOSTRAR UN MENSAJE DE ERROR Y DESCARTAR EL PAGO, SINO ACEPTAR EL PAGO).
Lo que yo sé es que tengo que comparar el destino y el núm de doc. si son iguales significa que para ese destino con ese doc ya se realizó el pago. La comparación la haría de este modo

Código Delphi [-]
(Registro.NumDoc=Edit2.Text) and (Registro.Destino=Combobox2.Items[Combobox2.itemindex])

Según mi profesor tengo que utilizar un While o un Until para resolverlo. Si a alguien se le ocurre algo bienvenido sea.
Desde ya, gracias.

ecfisa 03-03-2015 04:37:29

Hola napsterk89.
Cita:

Empezado por napsterk89 (Mensaje 489569)
...
Lo que yo sé es que tengo que comparar el destino y el núm de doc. si son iguales significa que para ese destino con ese doc ya se realizó el pago.
...

Lo típico sería declarar un campo de pago, pero si la condición para considerar un registro pagado es tál como comentas, podrías hacer:
Código Delphi [-]
function IfHavePay(var FileReg: TFileReg; reg: TRegister): Boolean;
var
  r: TRegister;
begin
  Result:= False;
  Seek(FileReg, 0);
  while not Result and not Eof(FileReg) do
  begin
    Read(FileReg, r);
    Result:= (r.NumDoc = reg.NumDoc) and (r.Destino = reg.Destino);
  end;
end;

Un ejemplo de uso:
Código Delphi [-]
...
type
  TRegister = packed record
    NumDoc : string[9];
    Destino: string[15];
    ...
  end;

  TFileReg = file of TRegister;
...

procedure ...
var
  FileReg: TFileReg;
  r: TRegister;
begin
  AssignFile(FileReg, 'nombre_archivo.dat');
  Reset(FileReg);

  r.NumDoc := Edit2.Text;
  r.Destino:= Combobox2.Items[Combobox2.itemindex];

  if IfHavePay(FileReg, r) then
    ShowMessage('Pagado')
  else
    ShowMessage('Impago');

  CloseFile(FileReg);
end;

Saludos :)


La franja horaria es GMT +2. Ahora son las 00:00:38.

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