binary files

Q:  How do I read and write binary files?

A:  If the data can be stored in its binary form, it's as simple in Delphi as it was in BP7:

type
  TUserNotes = record
    TimeStored : TDateTime;
    Comment : string[20];
    TaxCost : real;
    NetCost : real;
    Altered : Boolean;
  end;

TUserNotesFile = file of TUserNotes;
    var
       UserNotes : TUserNotes;
       F: TUserNotesFile;
begin
       System.Assign(F,'MYDATA.DAT');
       Rewrite(F);
       { fill in the fields of "UserNotes" }
       Write(F,UserNotes);
       Close(F);
end;
 

Here is a fuller example:

unit Bin;

interface

uses
  SysUtils, WinTypes, WinProcs, Messages, Classes, Graphics, Controls,
  Forms, Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Button1: TButton;
    Button2: TButton;
    ListBox1: TListBox;
    procedure Button1Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation
type
  TUserNotes = record
    TimeStored : TDateTime;
    Comment : string[20];
    TheCost : real;
  end;
  TUserNotesFile = file of TUserNotes;

{$R *.DFM}

procedure TForm1.Button1Click(Sender: TObject);
var
  UserNotes : TUserNotes;
  F: TUserNotesFile;
begin
  System.Assign(F,'MYDATA.DAT');
  Rewrite(F);

  with UserNotes do begin
    TimeStored := now;
    comment := 'Yo, mama!';
    TheCost := 123.456;
  end;
  system.Write(F, UserNotes);
  system.Close(F);
end;

procedure TForm1.Button2Click(Sender: TObject);
var
  UserNotes : TUserNotes;
  F: TUserNotesFile;
begin
  System.Assign(F,'MYDATA.DAT');
  Reset(F);

  system.read(F, UserNotes);
  with UserNotes do begin
    listbox1.items.add(DateTimeToStr(TimeStored));
    listbox1.items.add(comment);
    listbox1.items.add(FloatToStr(TheCost));
  end;
  system.Close(F);
end;

end.