• Viernes 8 de Noviembre de 2024, 19:46

Autor Tema:  Ficheros Secuenciales  (Leído 2337 veces)

JMAlonso

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Ficheros Secuenciales
« en: Sábado 15 de Octubre de 2005, 23:33 »
0
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.

Alpha_

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Ficheros Secuenciales
« Respuesta #1 en: Lunes 17 de Octubre de 2005, 04:37 »
0
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.
Alpha
http]

JMAlonso

  • Miembro activo
  • **
  • Mensajes: 46
    • Ver Perfil
Re: Ficheros Secuenciales
« Respuesta #2 en: Lunes 17 de Octubre de 2005, 23:25 »
0
Muchas gracias, pero yo creia que habia una instruccion tipo append, que
añade al final del fichero.

saludos.

Alpha_

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Ficheros Secuenciales
« Respuesta #3 en: Miércoles 19 de Octubre de 2005, 20:46 »
0
Pascal no la tiene.

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

Jejej, saludos.
Alpha
http]

Enko

  • Miembro de PLATA
  • *****
  • Mensajes: 1562
  • Nacionalidad: 00
    • Ver Perfil
Re: Ficheros Secuenciales
« Respuesta #4 en: Jueves 20 de Octubre de 2005, 00:35 »
0
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.

Alpha_

  • Miembro activo
  • **
  • Mensajes: 72
    • Ver Perfil
Re: Ficheros Secuenciales
« Respuesta #5 en: Sábado 22 de Octubre de 2005, 04:04 »
0
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.
Alpha
http]

Isnel

  • Miembro activo
  • **
  • Mensajes: 29
    • Ver Perfil
Re: Ficheros Secuenciales
« Respuesta #6 en: Lunes 24 de Octubre de 2005, 20:11 »
0
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;