Ahi va de nuevo el codigo...toy buescando como hacer lo que me dijiste..
Código:
unit Unit2;
interface
uses Dialogs, StdCtrls, SysUtils, Grids;
type
Cliente = Record
Apellido, nombres: string[20];
DNI, saldo: double;
end;
TArchivo = class
private
Archi:File of Cliente;
datos: Cliente;
Ver: TStringGrid;
public
procedure CrearArchivo(ArchiFisico:string);
procedure AbrirArchivo(ArchiFisico:string);
procedure AgregarCliente(c:Cliente;var b:byte);
procedure GuardarArchivo(ArchiFisico:string);
procedure EliminarCliente(var h:longint; e10: string);
procedure CerrarArchivo;
function Buscar_X_DNI(var h:longint; var c:Cliente):boolean;
procedure MostrarLista(var ver:TStringGrid);
end;
implementation
procedure TArchivo.CrearArchivo;
begin
AssignFile(Archi,ArchiFisico);
Rewrite(Archi);
end;
procedure TArchivo.AbrirArchivo(ArchiFisico:string);
begin
AssignFile(Archi,ArchiFisico);
Reset(Archi)
end;
procedure TArchivo.AgregarCliente(c:Cliente;var b:byte);
begin
{$I-}
Seek(Archi, FileSize(archi));
{$I+};
b:=IOResult;
If b=0 then
Write(Archi, c);
end;
procedure TArchivo.GuardarArchivo(ArchiFisico:string);
begin
AssignFile(Archi,ArchiFisico);
Rewrite(Archi);
end;
procedure TArchivo.EliminarCliente(var h:longint; e10: string);
var
aux: file of Cliente;
begin
assignfile(aux,'temp.dat');
{$I-}
reset(archi);
rewrite(aux);
{$I+}
if ioresult<>0 then
showmessage('Error en Archivo')
else
Begin
while not eof (archi) do begin
read(archi,datos);
if datos.dni <> h then
write(aux,datos);
end;
closefile (archi);
closefile(aux);
erase(Archi);
if not
RenameFile('temp.dat', e10)
then
Showmessage('Error renombrando Archivos!');
end;
Showmessage ('Se eliminó correctamente el Cliente con DNI'+ inttostr(h));
end;
procedure TArchivo.CerrarArchivo;
begin
if IOresult = 0 then
begin
closefile(Archi);
end
end;
function TArchivo.Buscar_X_DNI(var h:longint;var c: Cliente):boolean;
begin
reset(archi);
while not eof (archi) do
begin
read(archi, c);
if c.dni = h then
begin
Result := True;
Exit;
end;
end;
// Cliente no encontrado
Result := False;
end;
procedure TArchivo.MostrarLista(var ver:TStringGrid);
var fila, columna: integer;
begin
Reset(Archi);
fila:=1;
columna:=0;
while not EOF do
begin
datos.first;
ver.Cells[fila,columna] := datos.nombres;
inc(columna);
ver.Cells[fila,columna] := datos.Apellido;
archi.datos.next;
inc(fila):
end;
end;
showmessage('El Archivo esta vacio');
exit;
end;
end;
end.
gracias