Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   archivos binarios (https://www.clubdelphi.com/foros/showthread.php?t=27926)

kazcote 03-12-2005 16:19:23

archivos binarios
 
Como puedo hacer para crear un archivo del tipo "typed", y poder ir agregando registros sin borrar lo anterior, es decir, de alguna manera abrirlo en modo append, pero para esta clase de archivos.

gracias...

Enan0 03-12-2005 21:18:21

Bueno buscando en el viejo y querido Pascal 7 de Joyanes Aguilar tenemos
Código Delphi [-]

Var
  archi,aux: file of (mi tipo de datos)
  ....
  
  assign (archi, 'miarchivo.algo');
  aux:=archi;
  reset(archi); //debe existir
  while not eof(archi) do
    begin
      readln(archi,mitopodedatos);
      writeln(aux,mitipodedatos);
    end;
  //aux es la copia del arhivo abierto de lectura y escritura y estas al final de la linea

kazcote 03-12-2005 23:00:13

che lo probe pero me tira un error en el writeln, pq creo que esto es para archivos de texto.
Lo que necesito es acceder al archivo, escribir en el, salir. Despues en otro momento volver al archivo y volver a escribir pero que no me sobreescriba lo anterior sino que me lo agregue.

gracias

saludos
kazcote

Héctor Randolph 03-12-2005 23:12:44

Ejemplo sencillo
 
Te pongo un ejemplito para que lo pongas en uso.

Código Delphi [-]
type TRegistro=record
  Id:Integer;
  Nombre:String[30];
end;

...

procedure TForm1.Button1Click(Sender: TObject);
var
  F:file of TRegistro;
  Reg: TRegistro;
begin
  Randomize;
  Reg.Id:=Random(1000);
  Reg.Nombre:='Append registro';

  AssignFile(F,'c:\pruebas.dat');
  if FileExists('c:\pruebas.dat') then
  begin
    Reset(F);             // Abrir archivo
    Seek(F,FileSize(F)); // Ir a última posición
  end
  else
    ReWrite(F); // Crear archivo

  BlockWrite(F,Reg,1); //Escribir un registro
  CloseFile(F);
end;

Saludos

Enan0 05-12-2005 02:29:46

Héctor, perdoname. pero si mal no recuerdo "Reset " solo los habre para lectura..
Y si Kazcote, no es WriteLN sino WRITE!!!!

Héctor Randolph 05-12-2005 04:02:35

Cita:

Empezado por Enan0
Héctor, perdoname. pero si mal no recuerdo "Reset " solo los abre para lectura..

En realidad Reset no está restringido para archivos de sólo lectura, existe una variable global que se llama FileMode y esta es la que controla la forma en que trabaja Reset.

Cita:

Empezado por Ayuda de Delphi
FileMode variable
Indicates the access mode on typed and untyped files opened by the Reset procedure.

The default FileMode is 2 (Read/Write access). Assigning another value to FileMode causes all subsequent Resets to use that mode.

De acuerdo con esto, la variable FileMode es la que cambia el acceso a los archivos, y por defecto permite la lectura/escritura.

Saludos


La franja horaria es GMT +2. Ahora son las 21:39:09.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi