Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 21.06.2010, 15:52   #1
Asira
Пользователь
 
Регистрация: 12.12.2009
Сообщений: 84
По умолчанию Текстовые файлы

Найти стоим всего товара на складе, самый деш товар, а также по запросу наимен товара – его кол на складе (один и тот же товар может быть записан несколько раз).
Формат строки:
Наименов товара (строк из 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.
Asira вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Текстовые файлы Pihan Общие вопросы C/C++ 3 18.05.2010 22:41
Текстовые файлы hidalgo Фриланс 15 27.04.2010 20:54
Текстовые файлы (C++) -=DOBRO=- Помощь студентам 16 24.12.2009 22:34
Текстовые файлы _Smoke_ Помощь студентам 2 15.06.2009 15:12