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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 11.11.2015, 00:25   #1
Акаши
Пользователь
 
Регистрация: 19.10.2015
Сообщений: 10
По умолчанию Выборка в записях

Ребята буду рад если мне поможете
В программе имеется кнопка ВЫБОРКА при нажатии которой выдается искомый товар и его цена , одноименных товаров может быть несколько нужно получить их сумму , у меня не получается что я делаю не так? (Button5)

Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls;

type
  TForm1 = class(TForm)
    Edit1: TEdit;
    Label2: TLabel;
    Label3: TLabel;
    Label4: TLabel;
    Label5: TLabel;
    Edit2: TEdit;
    Edit3: TEdit;
    Edit4: TEdit;
    Button1: TButton;
    Memo1: TMemo;
    Button2: TButton;
    Button3: TButton;
    Button4: TButton;
    Button5: TButton;
    Button6: TButton;
    procedure FormCreate(Sender: TObject);
    procedure Button6Click(Sender: TObject);
    procedure Button2Click(Sender: TObject);
    procedure Button4Click(Sender: TObject);
    procedure Button3Click(Sender: TObject);
    procedure Button1Click(Sender: TObject);
    procedure Button5Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
  TStudent=record
  FIO:integer;
  otcm:string[50];
  otcf:integer;
  otcs:integer;
  end;

var
  Form1: TForm1;
   stud:array[1..50] of tstudent;
   stud1:tstudent;
   Fz:file of Tstudent;
   sum,nzap,x,i,c,m:integer;
   l,n:integer;
   k: string;
implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
Edit1.Text:=' ';
Edit2.Text:=' ';
Edit3.Text:=' ';
Edit4.Text:=' ';
Memo1.clear;
nzap:=0;
end;

procedure TForm1.Button6Click(Sender: TObject);
begin
form1.close
end;


procedure TForm1.Button2Click(Sender: TObject);
begin
assignfile(fz,'a.txt');
memo1.Clear;
rewrite(fz);
for i:=0 to nzap-1 do begin
seek(fz,i);
end;
closefile(fz);
end;


procedure TForm1.Button4Click(Sender: TObject);
begin
stud1.fio:=strtoint(edit1.Text);
stud1.otcm:=edit2.Text;
stud1.otcs:=strtoint(edit3.Text);
stud1.otcf:=strtoint(edit4.Text);

memo1.Lines.add(inttostr(stud1.fio)+' '+stud1.otcm+' '+inttostr(stud1.otcs)+' '+inttostr(stud1.otcf));
edit1.Text:=' ';
edit2.Text:=' ';
edit3.Text:=' ';
edit4.Text:=' ';
assignfile(fz,'a.txt');
memo1.Clear;
reset(fz);
x:=filesize(fz);
seek(fz,x);
write(fz,stud1);
closefile(fz);

end;


procedure TForm1.Button3Click(Sender: TObject);
begin
assignfile(fz,'a.txt');
memo1.Clear;
reset(fz);
while not eof(fz) do begin
read(fz,stud1);
memo1.Lines.add(inttostr(stud1.fio)+' '+stud1.otcm+' '+inttostr(stud1.otcf)+' '+inttostr(stud1.otcs));
end;
end;

procedure TForm1.Button1Click(Sender: TObject);
  begin
stud[nzap].fio:=strtoint(edit1.Text);
stud[nzap].otcm:=edit2.Text;
stud[nzap].otcf:=StrToInt (edit3.Text);
stud[nzap].otcs:=StrToInt (edit4.Text);
memo1.Lines.Add(inttostr(stud[nzap].fio)+' '+stud[nzap].otcm) ;
 edit1.Text:=' ';
  edit2.Text:=' ';
  edit3.Text:=' ';
  edit4.Text:=' ';
  nzap:=nzap+1;
end;

procedure TForm1.Button5Click(Sender: TObject);
begin
k:=edit2.Text;
 stud[nzap].otcf:=n;
  stud[nzap].otcs:=l;
assignfile(fz,'a.txt');
memo1.Clear;
reset(fz);
sum:=0;
while not eof(fz) do
 begin

  read(fz,stud1);
  if (stud1.otcm)=k then
  memo1.Lines.Add(k+' '+floattostr(stud1.otcf*stud1.otcs));

  sum:=sum+(stud1.otcf*stud1.otcs);
   memo1.Lines.Add(floattostr(sum));

  end;
  closefile(fz);
end;

end.

Последний раз редактировалось Вадим Мошев; 11.11.2015 в 01:27.
Акаши вне форума Ответить с цитированием
Старый 11.11.2015, 09:43   #2
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Во-первых: Студентов пустить на товар... Такое наверное только в одной стране возможно. Имею ввиду сомали (а то понабегут ща некоторые...)
Во-вторых: memo1.Lines.Add(floattostr(sum)); нужно вынести за цикл.
В-третьих: a.txt как выглядит?
Ну и в-четвертых:
Код:
while not eof(fz) do
 begin

  read(fz,stud1);
  if (stud1.otcm)=k then BEGIN
   memo1.Lines.Add(k+' '+floattostr(stud1.otcf*stud1.otcs));
   sum:=sum+(stud1.otcf*stud1.otcs);
  END;
.......
  end;
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 11.11.2015, 21:00   #3
Акаши
Пользователь
 
Регистрация: 19.10.2015
Сообщений: 10
По умолчанию

Ну вот не получается сделать не пойму уже 3-й день
Акаши вне форума Ответить с цитированием
Ответ


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

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Выборка выборка с таблицы с отношением многие-ко-многим 8alig8 БД в Delphi 2 24.06.2010 12:21
совпадение в записях kinnder Помощь студентам 3 06.03.2010 15:45
Работа с файлами.Строки в записях. Ozerich Общие вопросы Delphi 12 20.07.2008 23:13
Сортировка в файлах и записях. Паскаль Elizabeth Black Помощь студентам 2 27.05.2008 21:51