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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль

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

Ответ
 
Опции темы Поиск в этой теме
Старый 18.03.2010, 18:35   #1
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию Таблица, массив, цикл и ошибка

Всем доброго времени суток.

Никак не пойму, что не так. Есть массив из максимум восьми элементов, нужно сравнить эти элементы со столбцом таблицы. Т.е. если ячейка (6, 1) есть в массиве, то идём дальше, если нет, то заменяем всю строку на Not. И так со всем столбцом (6, 2), (6, 3) и т.д. до (6, 8). Вот код:

Код:
procedure TfrmMain.btnScanClick(Sender: TObject);
var
  I, J, K: integer;
  boolVNot: boolean;
begin
  for I := 1 to 8 do
  begin
    boolVNot := true;
    for J := 1 to 8 do
    begin
      if sgShow.Cells[6, I] = frmInput.arFunctionParts[J] then
        boolVNot := false;
    end;
    if boolVNot = true then
    begin
      for K := 0 to 7 do
        sgShow.Cells[K, I] := 'Not';
    end;
  end;
end;
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 18.03.2010, 20:18   #2
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Не проверял, но, возможно, надо чуть подправить:

Код:
 for J := 1 to 8 do
    begin
      if sgShow.Cells[6, I] = frmInput.arFunctionParts[J] then
        boolVNot := false else boolVNot := true;
    end;
Попробуйте.

Хотя нет... Не то. Можете сказать, какая ошибка проявляется?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.

Последний раз редактировалось Neeter; 18.03.2010 в 20:28.
Neeter вне форума Ответить с цитированием
Старый 18.03.2010, 20:27   #3
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Neeter, нет так не пойдёт. Я проверяю ячейку со всеми элементами массива и если такого элемента в массиве нет, то тогда и зачёркиваю строку.
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Старый 18.03.2010, 20:37   #4
Neeter
Форумчанин
 
Аватар для Neeter
 
Регистрация: 22.02.2009
Сообщений: 875
По умолчанию

Вот вы последний цикл начинаете с нуля. А почему же тогда первые два с единицы? Возможно, у вас в массиве нумерация с единицы, тогда все равно первый цикл (с счетчиком I) надо начинать с нуля, потому что он работает с таблицей, где нумерация с нуля:

Код:
procedure TfrmMain.btnScanClick(Sender: TObject);
var
  I, J, K: integer;
  boolVNot: boolean;
begin
  for I := 0 to 7 do
  begin
    boolVNot := true;
    for J := 1 to 8 do
    begin
      if sgShow.Cells[6, I] = frmInput.arFunctionParts[J] then
        boolVNot := false;
    end;
    if boolVNot = true then
    begin
      for K := 0 to 7 do
        sgShow.Cells[K, I] := 'Not';
    end;
  end;
end;
Если я не прав, то скажите хотя бы, какая ошибка проявляется?
Чтобы обнаруживать ошибки, программист должен иметь ум, которому доставляет удовольствие находить изъяны там, где, казалось, царят красота и совершенство.
Neeter вне форума Ответить с цитированием
Старый 18.03.2010, 20:52   #5
Marsel737
Форумчанин
 
Аватар для Marsel737
 
Регистрация: 09.11.2009
Сообщений: 669
По умолчанию

Neeter, по номерам строк и номерам в массиве. всё тему можно закрывать, но Neeter, вам всё равно спасибо что откликнулись.

Ошибка была в том, что при заполнении таблицы у меня в одном случае буква "y" была обычной, в другом заглавной: yY, на первый взгляд незаметно.
Я не всегда знаю, о чем говорю, но знаю, что прав. © Мухаммед Али.
К чёрту обстоятельства. Я создаю возможности. © Брюс Ли
Marsel737 вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
цикл или массив wasabi Фриланс 11 27.01.2010 21:23
Массив and Таблица EugeneIsmatulin Общие вопросы Delphi 2 18.06.2009 05:22
Цикл с предусловием. ( цикл while) Цикл с постусловием. (цикл repeat ... until) Mr.User Помощь студентам 9 23.11.2007 01:34