Implementando el ejemplo de Delphius, la opcion de eliminar no funciona correctamente. Pues me deja repetido un registro, y deja registros vacios al final, como ya comento kabracity
Le hice unos arreglos y le agregue la funcion
Truncate();, que su funcion es eliminar todos los registros a partir de la posicion actual.
Así fue como quedo en mi programa:
Código Delphi
[-]
procedure TfrmClave.BotonDelUserClick(Sender: TObject);
var
Pos :Integer;
begin
Pos:=0; Seek(MiFile, 0);
while Not Eof(MiFile) do
begin
Read(MiFile, Usuario);
if Usuario.Nombre = ComboUser.Text then
begin
Pos:=FilePos(MiFile); Break;
end;
end;
while Not Eof(MiFile) do
begin
Read(MiFile,Usuario);
Seek(MiFile,Pos-1);
Write(MiFile, Usuario);
Inc(Pos);
Seek(MiFile,Pos);
end;
Seek(MiFile,Pos-1);
Truncate(MiFile);
Seek(MiFile,0); ComboUser.Items.Clear;
While Not EOF(MiFile) do
begin
Read(MiFile, Usuario);
ComboUser.Items.Add(Usuario.Nombre);
end;
ComboUser.Text:='';
end;
De esta forma me funciona perfecto, elimina bien.
kabracity
El uso de este tipo de ficheros, como decia Delphius, es para cosas sencillas, para algo mas complejo es mejor usar Bases de Datos.
En mi caso lo uso, pues solo almacenare un registro de usuarios, que siempre van a ser pocos (nunca seran mas de 10 o 20), no me afectaria el rendimiento.