SoloCodigo

Programación General => Delphi => Mensaje iniciado por: JMAlonso en Sábado 15 de Octubre de 2005, 23:33

Título: Ficheros Secuenciales
Publicado 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.
Título: Re: Ficheros Secuenciales
Publicado por: Alpha_ en Lunes 17 de Octubre de 2005, 04:37
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.
Título: Re: Ficheros Secuenciales
Publicado por: JMAlonso en Lunes 17 de Octubre de 2005, 23:25
Muchas gracias, pero yo creia que habia una instruccion tipo append, que
añade al final del fichero.

saludos.
Título: Re: Ficheros Secuenciales
Publicado por: Alpha_ en Miércoles 19 de Octubre de 2005, 20:46
Pascal no la tiene.

Delphi, sinceramente no recuerdo. No he terminado de explorarlo en tooooooooooooooda su extensión.

Jejej, saludos.
Título: Re: Ficheros Secuenciales
Publicado por: Enko en Jueves 20 de Octubre de 2005, 00:35
Cita de: "Alpha_"
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.
Título: Re: Ficheros Secuenciales
Publicado por: Alpha_ en Sábado 22 de Octubre de 2005, 04:04
Cita de: "Enko"
Cita de: "Alpha_"
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.
Título: Re: Ficheros Secuenciales
Publicado por: Isnel en Lunes 24 de Octubre de 2005, 20:11
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;