Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Здравствуйте! Помогите мне, пожалуйста!!!! [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]

В чем собссно вопрос заключается ?


Наверх

Титульная страница Поиск, карта сайта Написать письмо