tarco35,
Cita:
Empezado por ecfisa
...podes usar un arreglo de registros para acceder a bloques de registros en un sólo acceso a disco...
|
Revisa este código:
Código Delphi
[-]
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls;
type
TForm1 = class(TForm)
ListBox1: TListBox;
Button1: TButton;
Button2: TButton;
Button3: TButton;
Button4: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
procedure Button4Click(Sender: TObject);
private
public
end;
TData = record
Name : Array[0..29] of Char;
PIN : Integer;
DateData : TDateTime;
end;
const
CountReg = 1000;
var
Form1: TForm1;
ArrayData : Array[0..CountReg-1] of TData;
FileData : File of TData;
FileName : String;
implementation
{$R *.dfm}
procedure TForm1.FormCreate(Sender: TObject);
begin
Randomize;
FileName := ExtractFilePath(Application.ExeName) + 'Data.txt';
end;
procedure TForm1.Button1Click(Sender: TObject);
var
i : Integer;
begin
FillChar(ArrayData,Length(ArrayData),0);
for i := 0 to CountReg - 1 do
begin
StrPCopy(ArrayData[i].Name,'Name-' + IntToStr(i));
ArrayData[i].PIN := Random(1000);
ArrayData[i].DateData := Now + Random(365);
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
begin
AssignFile(FileData, FileName);
Rewrite(FileData);
BlockWrite(FileData, ArrayData, CountReg);
CloseFile(FileData);
end;
procedure TForm1.Button3Click(Sender: TObject);
var
i : Integer;
begin
FillChar(ArrayData,SizeOf(ArrayData),0);
AssignFile(FileData, FileName);
Reset(FileData);
Seek(FileData, 0);
BlockRead(FileData, ArrayData, CountReg);
for i := 0 to CountReg - 1 do
begin
ListBox1.Items.Add(ArrayData[i].Name
+ ' '
+ IntToStr(ArrayData[i].PIN)
+ ' '
+ DateTimeToStr(ArrayData[i].DateData));
end;
CloseFile(FileData);
end;
procedure TForm1.Button4Click(Sender: TObject);
begin
ListBox1.Clear;
end;
end.
El código anterior en Delphi 7 bajo Windows 7 Professional x32,
permite leer y grabar bloques de registros de un archivo en una sola operación de acceso a disco.
Nota:
Excelente técnica ecfisa
Espero sea útil
Nelson.