Ver Mensaje Individual
  #9  
Antiguo 04-09-2014
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Reputación: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola nlsgarcia.

Es un resabio del viejo Turbo Pascal... , con Delphi ya podemos hacer:
Código Delphi [-]
...
const
  MAXDATA = 100;

type
  TReg = packed record
    dato: string[20];
    posi: integer;
  end;
  TFileReg = file of TReg;

var
  fr: TFileReg;
  rg: TReg;
  vr: array[0..MAXDATA] of TReg;
  FName: string;

// inicializar
procedure TForm1.FormCreate(Sender: TObject);
begin
  FName:= ExtractFilePath(Application.ExeName) + 'prueba.dat';
  AssignFile(fr, FName);
  try
    Reset(fr);
  except
    Rewrite(fr);
  end;
  CloseFile(fr);
  Randomize;
end;

// guardar
procedure TForm1.btnWriteClick(Sender: TObject);
var
  i: Integer;
begin
  // algunos datos...
  for i:= 0 to MAXDATA-1 do
  begin
    vr[i].dato:= Format('Registro %d',[i+1]);
    vr[i].posi:= i;
  end;

  // guardar 
  with TFileStream.Create(FName, fmOpenWrite) do
  try
    Position:= 0;
    Write(vr, MAXDATA * SizeOf(rg));
  finally
    Free;
  end;
end;

// leer
procedure TForm1.btnReadClick(Sender: TObject);
begin
  with TFileStream.Create(FName, fmOpenRead) do
  try
    Position:= 0;
    Read(vr, MAXDATA * SizeOf(rg));
  finally
    Free;
  end;
end;

// mostrar
procedure TForm1.btnShowClick(Sender: TObject);
var
  i: Integer;
begin
  with ListBox1.Items do
  begin
    Clear;
    for i:= 0 to MAXDATA-1 do
      Add(Format('%s %d',[vr[i].dato, vr[i].posi]));
  end;
end;
con el mismo resultado.

Saludos
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita