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

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

Вернуться   Форум программистов > C/C++ программирование > C++ Builder
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 08.06.2012, 01:33   #1
II_Dimit_II
Пользователь
 
Регистрация: 29.05.2012
Сообщений: 32
Печаль Поиск в StringGrid

Мне нужно найти записи в стринг гриде а не нужные удалить!!! вот код, но он что то не работает!!!!
Код:
void __fastcall TForm6::Button2Click(TObject *Sender)
{
int i;
if (ComboBox1->ItemIndex==0) {
for (i = Form1->StringGrid1->Row; i < Form1->StringGrid1->RowCount-1; i++) {
if (Form1->StringGrid1->Cells[0][i] != Form6->Edit1->Text) {
 for (i = Form1->StringGrid1->Row; i < Form1->StringGrid1->RowCount-1; i++) {
	 Form1->StringGrid1->Rows[i]=Form1->StringGrid1->Rows[i+1];
	 Form1->StringGrid1->RowCount=Form1->StringGrid1->RowCount-1;
 }
 }}}
 }

Последний раз редактировалось Stilet; 08.06.2012 в 07:27.
II_Dimit_II вне форума Ответить с цитированием
Старый 08.06.2012, 06:24   #2
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

И где Вас учили такому написанию говнокода?
Просто жуть. Минут двадцать пытался, что-либо разобрать, нихрена не разобрался.
Ужас.
Если Вы самоучка, это простительно. Но если Вы учитесь у кого-то, я бы Вашего учителя избил-бы до полусмерти.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder

Последний раз редактировалось Smitt&Wesson; 08.06.2012 в 06:31.
Smitt&Wesson вне форума Ответить с цитированием
Старый 08.06.2012, 07:32   #3
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Предложу свой Shitcode:
Код:
void __fastcall TForm6::Button2Click(TObject *Sender)
{
int i;
TStringList *s=new TStringList();
if (ComboBox1->ItemIndex==0) {
 for (i = Form1->StringGrid1->Row; i < Form1->StringGrid1->RowCount-1; i++) {
  if (Form1->StringGrid1->Cells[0][i] == Form6->Edit1->Text) s->Append(Form1->StringGrid1->Rows[i]->Text;
 }
}

Form1->StringGrid1->RowCount=s->Count;
 for(i=0;i<s->Count;i++) Form1->StringGrid1->Rows[i]->Text=s[i];

delete s;
Надуюсь смысл идеи понятен...
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.06.2012, 07:46   #4
Smitt&Wesson
Старожил
 
Аватар для Smitt&Wesson
 
Регистрация: 31.05.2010
Сообщений: 13,964
По умолчанию

Цитата:
Надуюсь смысл идеи понятен...
Не надувайся .
А II_Dimit_II-у скажу - учись.
Пиши пьяным, редактируй трезвым.
Справочник по алгоритмам С++ Builder
Smitt&Wesson вне форума Ответить с цитированием
Старый 08.06.2012, 08:22   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,792
По умолчанию

Упс... Не проснулся еще мабудь
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 08.06.2012, 10:30   #6
nick42
Форумчанин
 
Аватар для nick42
 
Регистрация: 14.10.2011
Сообщений: 267
По умолчанию

А я самоучка, и в общем-то смысл понял: сравнивается в цикле содержимое первой (инд.0) ячейки таблицы с полем эдит с 6-й формы и при неравенстве строка таблицы удаляется методом сдвига оставшихся строк; число строк таблицы при этом корректируется. Только... для вложенных циклов нужно использовать РАЗНЫЕ индексы (у вас i в обоих), и по собственному опыту - опасно использовать в ограничителе цикла (циклов в вашем случае) переменную, которая внутри этих циклов корректируется. Лучше как-то по другому.
nick42 вне форума Ответить с цитированием
Старый 08.06.2012, 15:20   #7
II_Dimit_II
Пользователь
 
Регистрация: 29.05.2012
Сообщений: 32
По умолчанию

как говорится на ошибках учатся, а про того кто меня этому научил, я согласен))!!! убить бы его!!!))

Последний раз редактировалось II_Dimit_II; 08.06.2012 в 15:29.
II_Dimit_II вне форума Ответить с цитированием
Старый 09.06.2012, 09:34   #8
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Код:
if (Form1->StringGrid1->Rows[i]->IndexOf(Form6->Edit1->Text) != -1)
{
      for (i = Form1->StringGrid1->Row; i < Form1->StringGrid1->RowCount-1; i++) 
      {
	  Form1->StringGrid1->Rows[i]->Assign(Form1->StringGrid1->Rows[i+1]);
	  Form1->StringGrid1->RowCount=Form1->StringGrid1->RowCount-1;
      }
}
Знающий не говорит, говорящий не знает (С) Лао Цзы

Последний раз редактировалось Krok27; 09.06.2012 в 09:38.
Krok27 вне форума Ответить с цитированием
Старый 10.06.2012, 19:24   #9
II_Dimit_II
Пользователь
 
Регистрация: 29.05.2012
Сообщений: 32
По умолчанию

может, кто ещё какой вариант предложит?
II_Dimit_II вне форума Ответить с цитированием
Старый 14.06.2012, 09:55   #10
Krok27
Форумчанин
 
Аватар для Krok27
 
Регистрация: 08.07.2010
Сообщений: 505
По умолчанию

Остальные варианты - за деньги.
Знающий не говорит, говорящий не знает (С) Лао Цзы
Krok27 вне форума Ответить с цитированием
Ответ


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

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

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


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Поиск в StringGrid Retiree Компоненты Delphi 1 27.04.2012 09:52
Поиск по БД в StringGrid Anny_Apple БД в Delphi 12 27.05.2011 00:14
Поиск в StringGrid program123 Общие вопросы Delphi 6 13.09.2010 09:45
поиск в StringGrid ... Kos123 Помощь студентам 0 18.04.2010 08:51
поиск в stringgrid Dimati87 Общие вопросы Delphi 6 17.07.2009 07:44