Interface
uses
TStoreDef;
var
dbase: TStore;
implementation
end.
unit FileWork;
Interface
uses
THardwareDef, TStoreDef;
type
TTempRecord = record
r_cpu: shortstring;
r_mem: integer;
r_hdd: integer;
r_price: real;
end;
THardwareFile = file of TTempRecord;
function HardwareToTemp (hw: THardware): TTempRecord;
procedure ReadFile (fname: shortstring; var dbase: TStore);
procedure WriteFile (fname: shortstring; dbase: TStore);
implementation
function HardwareToTemp (hw: THardware): TTempRecord;
begin
result.r_cpu := hw.CPU;
result.r_mem := hw.Memory;
result.r_hdd := hw.HDD;
result.r_price := hw.Price;
end;
procedure ReadFile (fname: shortstring; var dbase: TStore);
var
f: THardwareFile;
newel: TTempRecord;
newhw: THardware;
begin
AssignFile(f, fname);
Reset(f);
dbase := TStore.Create;
while not(EOF(f)) do
begin
read(f, newel);
newhw := THardware.Create(newel.r_cpu, newel.r_mem,
newel.r_hdd, newel.r_price);
dbase.Add(newhw);
end;
CloseFile(f);
end;
procedure WriteFile (fname: shortstring; dbase: TStore);
var
f: THardwareFile;
i: integer;
rec: TTempRecord;
begin
AssignFile(f, fname);
Rewrite(f);
for i:= 0 to dbase.GetMaxIndex do
begin
rec := HardwareToTemp(dbase.GetElement(i));
write(f, rec);
end;
CloseFile(f);
end;
end.
unit EditForm;
Interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Globals, THardwareDef, TStoreDef, StdCtrls, Buttons, ExtCtrls;
type
TfrmEdit = class(TForm)
laedCPU: TLabeledEdit;
laedMemory: TLabeledEdit;
laedHDD: TLabeledEdit;
laedPrice: TLabeledEdit;
bbSubmit: TBitBtn;
procedure bbSubmitClick(Sender: TObject);
private
index: integer;
function Check: boolean;
public
constructor Create(AOwner: TComponent; num: integer; hw: THardWare);
end;
var
frmEdit: TfrmEdit;
implementation
{$R *.dfm}
constructor TfrmEdit.Create(AOwner: TComponent; num: integer; hw: THardWare);
begin
inherited Create(AOwner);
index := num;
laedCPU.Text := hw.CPU;
laedMemory.Text := IntToStr(hw.Memory);
laedHDD.Text := IntToStr(hw.HDD);
laedPrice.Text := FloatToStr(hw.Price);
end;
function TfrmEdit.Check: boolean;
var
m, h: integer;
r: real;
begin
try
m := StrToInt(laedMemory.Text);
h := StrToInt(laedHDD.Text);
r := StrToFloat(laedPrice.Text);
result := (not(laedCPU.Text = ''))and(m>0)and(h>0)and(r>0);
except
result := false;
end;
end;
procedure TfrmEdit.bbSubmitClick(Sender: TObject);
begin
if (Check) then
begin
if (index = -1) then
dbase.Add(laedCPU.Text, StrToInt(laedMemory.Text),
StrToInt(laedHDD.Text), StrToFloat(laedPrice.Text))
else
dbase.Edit(index, laedCPU.Text, StrToInt(laedMemory.Text),
StrToInt(laedHDD.Text), StrToFloat(laedPrice.Text));
frmEdit.Close;
end
else
ShowMessage('Введены некорректные данные!');
end;
end.
unit CommonGraphics;
