SoloCodigo
Programación General => Delphi => Mensaje iniciado por: JMAlonso en Sábado 15 de Octubre de 2005, 23:33
-
Quisiera añadir en un fichero un nuevo registro, pero lo que me
ocurre es que machaca lo que habia y me añade el nuevo registro.He aqui el codigo
var
Agenda : TipoListin;
BackupName: string;
FileHandle: integer;
begin
if SaveDialog1.Execute then
begin
if FileExists(SaveDialog1.FileName) then
FileHandle := FileOpen(SaveDialog1.FileName,fmOpenReadWrite)
else
begin
FileHandle := FileCreate(SaveDialog1.FileName);
FileHandle := FileOpen(SaveDialog1.FileName,fmOpenWrite);
end;
Agenda.Nom:=TxtNombre.Text;
Agenda.Ape2:=TxtApellido.Text;
Agenda.Telefono:=TxtTfno.Text;
FileWrite(FileHandle, Agenda,SizeOf(Agenda));
FileClose(FileHandle);
end;
close;
end;
Si alguien sabe algo, se lo agradecere.
Saludos.
-
Es que al abrir el archivo como escritura estás borrando lo que tiene.
Deberías hacer esto:
-Abrir un archivo temporal como escritura
-Abrir el original como lectura
-Copiar contenidos desde el archivo original al temporal
-Agregar el nuevo dato al temporal
-Cerrar el original
-Cerrar el temporal
-Eliminar el original
-Cambiarle el nombre al temporal para que tenga el nombre del original
Así, tendrías todo en el nuevo archivo.
-
Muchas gracias, pero yo creia que habia una instruccion tipo append, que
añade al final del fichero.
saludos.
-
Pascal no la tiene.
Delphi, sinceramente no recuerdo. No he terminado de explorarlo en tooooooooooooooda su extensión.
Jejej, saludos.
-
Pascal no la tiene.
Delphi, sinceramente no recuerdo. No he terminado de explorarlo en tooooooooooooooda su extensión.
Jejej, saludos.
Tanto pascal como object pascal tienen Append.
-
Pascal no la tiene.
Delphi, sinceramente no recuerdo. No he terminado de explorarlo en tooooooooooooooda su extensión.
Jejej, saludos.
Tanto pascal como object pascal tienen Append.
:o
Ya mismo estoy revisando TOOOOOOOOODOS mis libros.
-
Prueba así
var
Agenda : TipoListin;
BackupName: string;
F: File of TipoListin;
begin
if SaveDialog1.Execute then
begin
AssignFile(F, SaveDialog1.FileName);
if FileExists(SaveDialog1.FileName) then
Reset(F) {Abre F para modificar}
else
begin
ReWrite(F); {Crea F nuevo}
end;
Agenda.Nom:=TxtNombre.Text;
Agenda.Ape2:=TxtApellido.Text;
Agenda.Telefono:=TxtTfno.Text;
Seek(F, FileSize(F)); {Se ubica al final del archivo para adicionar un nuevo registro}
Write(F, Agenda); {Escribe el nuevo registro}
CloseFile(F);
end;
end;