Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Для новичков > неправильно делаю


Автор: petya07 5.11.2007, 19:24
Уважаемые, прошу объяснить в чем мой код уродский и что тут не правильного с точки зрения программирования.(код работает правильно). Спасибо!

Код

for i := 1 to form10.StringGrid1.RowCount - 1 do
 begin
   for j := 0 to Form7.table_mnog.RowCount - 1 do
   begin
     if (Form7.table_mnog.Cols[0].Strings[j] = '#') and (Form7.table_mnog.Cols[1].Strings[j] > IntToStr(i)) then
     begin

       if (Form7.table_mnog.Rows[1].Strings[0] <> '') and (Form7.table_mnog.Rows[1].Strings[1] = '') and (Form7.table_mnog.Rows[2].Strings[0] = '#') then
       begin
         h := 0;
         Form5.table_2.Cols[i].Strings[h] := Form7.table_mnog.Rows[j - 1].Strings[0];
       end else
       begin
         for h := Form7.table_mnog.ColCount - 1 downto 0 do
         begin
           form5.table_2.Cols[i].Strings[h] := Form7.table_mnog.Rows[j - 1].Strings[Form7.table_mnog.ColCount - 1 - h];
         end;
       end;
       Break;
     end;
   end;
 end;

Автор: skyboy 5.11.2007, 20:34
непонятно, что этот код делает. но 3 вложенных цикла настораживают.
какая цель кода?

Автор: petya07 5.11.2007, 20:51
вставляет из лдной таблицы данные в другую, вот с циклами я видать перемудрил...

Автор: skyboy 6.11.2007, 01:16
Цитата(petya07 @  5.11.2007,  18:24 Найти цитируемый пост)
Form7.table_mnog.Cols[1].Strings[j] > IntToStr(i)

не знаю твоей логики, но согласно это строке 5 > 11, потому что сравниваются как строки. А 7 > 62.
потом, вместо громоздкого Rows[5].Strings[3] можно пользовать просто Cells[3,5] - эффект тот же, но компактнее намного.
и ещё я так и не вник в логику копирования :(

Добавлено через 4 минуты и 11 секунд
кроме того, для копирования всей строки/всего столбца можно  использовать метод Assign объекта TStrings:
Код

StringGrid1.Rows[2].Assign(StringGrid2.Rows[5]);

Автор: petya07 6.11.2007, 01:50
спасибо учту!!!

Автор: Alexeis 6.11.2007, 10:34

M
Alexeis
Модератор: Название темы должно отражать ее суть!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)