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

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

Вернуться   Форум программистов > Delphi программирование > БД в Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.01.2010, 21:25   #1
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию stringgrid,сравнение двух столбцов на совпадения и не совпадения

извините за тему,я только в крайнем случае создаю тему,вот с утра мучаюсь и дошел до следующего: есть два столбца,столбец А и Б,в этих столбцах записаны телефонные номера,мне надо записать в столбец С те номера которые есть в столбце А но их нет в столбце Б
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
index:=1;
res:=0;
 for k:=1 to setchik  do
   begin
    for j:=1 to  setchik do
          begin
             if stringgrid1.Cells[1,k]=stringgrid1.Cells[2,j] then
             res:=res+1;
          end;
    if res=0 then
  stringgrid1.Cells[4,index]:=stringgrid1.Cells[1,k];
    index:=index+1;
  end;
end;
вот как я сделал,но при нажатии кнопки ничего не происходит,где я не так делаю?подскажите
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны
betirsolt вне форума Ответить с цитированием
Старый 17.01.2010, 22:23   #2
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Код:
if stringgrid1.Cells[1,k]=stringgrid1.Cells[2,j] then
res:=res+1 else
break;
Это - во-первых.
А во-вторых - зачем index ?
По-моему, должно быть что-то вроде
Код:
stringgrid1.Cells[4,j]:=...
Вы же не новую строку заносите, а редактируете старую...
mihali4 вне форума Ответить с цитированием
Старый 17.01.2010, 22:56   #3
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

меня выручил пошаговый режим
Код:
procedure TForm1.Button2Click(Sender: TObject);
begin
index:=1;
res:=0;
 for k:=1 to setchik  do
   begin
    for j:=1 to  setchik do
          begin
             if stringgrid1.Cells[1,k]=stringgrid1.Cells[2,j] then
             res:=res+1;
          end;
    if res=0 then
    begin
    stringgrid1.Cells[4,index]:=stringgrid1.Cells[1,k];
    index:=index+1;
    end;
    res:=0;
   end;
end;
этот код работает так как нужно,а если сделать break то это разве не прервет цикл?мне же нужно сравнить полностью два столбца,а index я использую для того чтобы в столбце С который я заполняю не было пустых строк,а если делать так
Код:
stringgrid1.Cells[4,j]:=...
то пустые бывают
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось mihali4; 17.01.2010 в 23:08.
betirsolt вне форума Ответить с цитированием
Старый 17.01.2010, 23:10   #4
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Цитата:
а если сделать break то это разве не прервет цикл?
Именно так. Какой смысл перебирать дальше, если условие
Код:
 if res=0 then
уже нарушено?
mihali4 вне форума Ответить с цитированием
Старый 18.01.2010, 00:05   #5
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

тут же наоборот цикл прерывается когда res=0;
но если обнаружено совпадение то дальше проверять действительно нет смысла,это потом доделаю может,хотя и без этого нормально работает
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось mihali4; 18.01.2010 в 00:17.
betirsolt вне форума Ответить с цитированием
Старый 18.01.2010, 00:19   #6
mihali4
*
Старожил
 
Регистрация: 22.11.2006
Сообщений: 9,201
По умолчанию

Да, виноват, поторопился...
Нужно
Код:
if stringgrid1.Cells[1,k]=stringgrid1.Cells[2,j] then
begin
res:=res+1;
break;
end;

Последний раз редактировалось mihali4; 18.01.2010 в 12:16.
mihali4 вне форума Ответить с цитированием
Старый 18.01.2010, 00:25   #7
betirsolt
Форумчанин
 
Регистрация: 20.07.2009
Сообщений: 421
По умолчанию

Я щас как раз пробовал этот
Код:
if stringgrid1.Cells[1,k]=stringgrid1.Cells[2,j] then
btgin
res:=res+1;
break;
end;
но почему то он не правильно работает...
Уважаемые модераторы, Я всячески стараюсь не нарушать правила сайта, будьте снисходительны

Последний раз редактировалось betirsolt; 18.01.2010 в 00:27.
betirsolt вне форума Ответить с цитированием
Старый 19.01.2010, 15:09   #8
verlen
Новичок
Джуниор
 
Регистрация: 17.01.2010
Сообщений: 2
По умолчанию

Цитата:
Сообщение от betirsolt Посмотреть сообщение
Я щас как раз пробовал этот
Код:
if stringgrid1.Cells[1,k]=stringgrid1.Cells[2,j] then
btgin
res:=res+1;
break;
end;
но почему то он не правильно работает...
не из-за "btgin" случайно? ты кстати имей ввиду, что в стринггриде нумерация столбцов начинается с 0 вроде как.
затестил с поправками - все работает нормально.
verlen вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Сравнение двух столбцов в разных книгах LAnLorD Microsoft Office Excel 132 17.05.2022 08:16
Совпадения shad0w Microsoft Office Excel 3 21.08.2009 12:42
Сравнение 2 столбцов и удаление повторяющегося из второго столбца ildusfm Microsoft Office Excel 3 07.05.2009 09:09
Не могу разобраться с сравнением 2-х двумерных масивов на совпадения текста tj_pablo Общие вопросы C/C++ 0 11.03.2009 22:21
как вывести факт совпадения? Dennikid Общие вопросы Delphi 0 29.10.2008 16:05