Найти стоим всего товара на складе, самый деш товар, а также по запросу наимен товара – его кол на складе (один и тот же товар может быть записан несколько раз).
Формат строки:
Наименов товара (строк из 20 символов) кол (целое) цена (действительное число)
Помогите сделать данное условие по запросу наимен товара – его кол на складе (один и тот же товар может быть записан несколько раз). ( у меня сделано но некорретно, так как при запросе товара нужно вводить кол-во пробелов до 20 ти ... как этого избежать?
и как доделать программу под действительную цену... ?
Код:
unit Unit3;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Grids, StdCtrls;
type
TForm1 = class(TForm)
StringGrid1: TStringGrid;
Button1: TButton;
OpenDialog1: TOpenDialog;
Label1: TLabel;
Label3: TLabel;
Button3: TButton;
Label2: TLabel;
Button2: TButton;
procedure FormCreate(Sender: TObject);
procedure Button1Click(Sender: TObject);
procedure Button2Click(Sender: TObject);
procedure Button3Click(Sender: TObject);
//
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure razm(x:TStringGrid);
var i:integer;
begin
with x do
begin
ClientWidth:=-1;
for i:=0 to ColCount-1 do ClientWidth:=ClientWidth+ColWidths[i]+GridLineWidth;
ClientHeight:=-1;
for i:=0 to RowCount-1 do ClientHeight:=ClientHeight+RowHeights[i]+GridLineWidth;
end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
Application.Title:='Склад';
with StringGrid1 do
begin
Cells[0,0]:='Наименование';
Cells[1,0]:='Количество';
Cells[2,0]:='Цена';
end;
end;
procedure TForm1.Button1Click(Sender: TObject);
var t:TextFile;
fam:string[20];
god,srok,i,j,min,k:integer;
begin
if OpenDialog1.Execute then
begin
try
with StringGrid1 do
begin
RowCount:=2;
for i:=0 to ColCount-1 do Cells[i,2]:='';
end;
razm(StringGrid1);
AssignFile(t,Opendialog1.FileName);
Reset(t);
while not eof(t) do
begin
StringGrid1.RowCount:=StringGrid1.RowCount+1;
razm(StringGrid1);
readln(t,fam,god,srok);
with StringGrid1 do
begin
Cells[0,StringGrid1.RowCount-2]:=fam;
Cells[1,StringGrid1.RowCount-2]:=IntToStr(god);
Cells[2,StringGrid1.RowCount-2]:=IntToStr(srok);
end;
end;
StringGrid1.RowCount:=StringGrid1.RowCount-1;
razm(StringGrid1);
//StringGrid1.Visible:=true;
Label1.Visible:=true;
Label2.Visible:=true;
min:=StrToInt(StringGrid1.Cells[2,1]);
j:=0; k:=0;
for i:=1 to StringGrid1.RowCount-1 do
begin
j:=j+ StrToInt(StringGrid1.Cells[1,i])*StrToInt(StringGrid1.Cells[2,i]);
if strToInt(StringGrid1.Cells[2,i])<strToInt(StringGrid1.Cells[2,min]) then min:=i; end;
Label1.Caption:='Общая стоимость товаров на складе '+Inttostr(j);
Label2.Caption:='Самый дешёвый товар: '+ StringGrid1.Cells[0,min]+StringGrid1.cells[2,min];
CloseFile(t);
except
on Exception do
begin
StringGrid1.Visible:=false;
StringGrid1.RowCount:=2;
razm(StringGrid1);
Label1.Visible:=false;
Label2.Visible:=false;
ShowMessage('Неверный формат файла!');
CloseFile(t);
end;
end;
end;
end;
procedure TForm1.Button2Click(Sender: TObject);
var
f,otch:string;
i:integer;
begin
f:=InputBox('Поиск товара','Введите наименование товара','');
if f='' then exit;
for i:=0 to StringGrid1.RowCount-1 do
if StringGrid1.Cells[0,i]=f then
begin
otch:=otch+'Наименование: '+StringGrid1.Cells[0,i];
otch:=otch+'Количество: '+StringGrid1.Cells[1,i];
end;
if otch='' then showmessage('Товара с таким именем не найдено!')
else ShowMessage(otch);
end;
procedure TForm1.Button3Click(Sender: TObject);
begin
Close;
end;
end.