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.