![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Здравствуйте! Помогите мне, пожалуйста!!!! [D7, XP]
Asellya © (2008-11-21 09:36:00)Дельфи изучаю недавно. Через пару дней нужно сдать отчет по производственно-технологической практике, а у меня пока не хватает навыков, чтобы решить задачу:
Даны 2 таблицы, абсолютно одинаковые по структуре - 4 столбца с такими заголовками "Номер №", "Наименование материала", "Единица измерения", "Количество". Если запись в столбце "Наименование материала" повторяется в обеих таблицах, то тогда "Количество", соответствующее этому материалу суммируется. При этом создается третья таблица с точно такой же структурой и результаты заносятся в нее уже под другими "Номерами№". А те записи, что не повторяются в двух таблицах, просто заносятся в третью в исходном виде.
Извините, за размашистость вопроса!!! Вот до чего я додумалась:procedure TForm1.Button1Click(Sender: TObject);
var i,j,a,b,k,l:integer;
m,n:real;
MatS,EdS,KolSK,MatU,EdU,KolUC:Array [0..50]of string;
begin
for j:=0 to StringGrid1.RowCount do
for i:=1 to 3 do
begin
MatS[j]:=StringGrid1.Cells[i,j];
EdS[j]:=StringGrid1.Cells[i,j];
TRY
KolSK[j]:=StringGrid1.Cells[i,j];
except
on Exception:EConvertError do
begin
ShowMessage('Количество материала ' +
'нужно указывать цифрами ' +#13+
'Используйте запятую, при записи дробных чисел.');
exit;
end;
end;
end;
for b:=0 to StringGrid2.RowCount do
for a:=1 to 3 do
begin
MatU[b]:=StringGrid2.Cells[a,b];
EdU[b]:=StringGrid2.Cells[a,b];
TRY
KolUC[b]:=StringGrid2.Cells[a,b];
except
on Exception:EConvertError do
begin
ShowMessage('Количество материала ' +
'нужно указывать цифрами ' +#13+
'Используйте запятую, при записи дробных чисел.');
exit;
end;
end;
end;
k:=0;
l:=1;
for j:=0 to StringGrid1.RowCount do
for b:=0 to StringGrid2.RowCount do
if MatS[j]=MatU[b]
then begin
StringGrid3.Cells[l,k]:=MatU[b];
l:=l+1;
StringGrid3.Cells[l,k]:=EdU[b];
l:=l+1;
TRY
m:=StrToFloat(KolUC[b]);
n:=StrToFloat(KolSK[j]);
StringGrid3.Cells[l,k]:=FloatToStrF(n+m,ffgeneral, 3,1);
except
on Exception:EConvertError do
begin
ShowMessage('Количество материала ' +
'нужно указывать цифрами ' +#13+
'Используйте запятую, при записи дробных чисел.');
exit;
end;
end;
l:=1;
k:=k+1;
end
else begin
StringGrid3.Cells[l,k]:=MatS[j];
l:=l+1;
StringGrid3.Cells[l,k]:=EdS[j];
l:=l+1;
StringGrid3.Cells[l,k]:=KolSK[j];
l:=1;
StringGrid3.Cells[l,k+1]:=MatU[b];
l:=l+1;
StringGrid3.Cells[l,k+1]:=EdU[b];
l:=l+1;
StringGrid3.Cells[l,k+1]:=KolUC[b];
k:=k+1;
l:=1;
end;
end;
Сергей М. (2008-11-21 09:47:00) [1]
> TRY
> KolSK[j]:=StringGrid1.Cells[i,j];
> except
> on Exception:EConvertError
Пеорвое же что бросается в глаза - ожидаемое исключение никогда не возникнет, ибо в выражении присваивания никакой конвертации типов данных не осуществляется
Сергей М. (2008-11-21 09:42:00) [2]В чем собссно вопрос заключается ?