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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 17.11.2014, 22:19   #1
kirillkost
 
Регистрация: 11.12.2012
Сообщений: 3
По умолчанию Алгоритм удаления строки из StringGrid. Где ошибка?

Собственно удаляет все правильно, если выделена не последняя строка. Последнюю строку почему-то не удаляет, даже если перед ней еще есть пару строк. В чем ошибка? Спасибо
Код:
void __fastcall TForm4::Button2Click(TObject *Sender)
{
   int Index = StringGrid1->Selection.Top; // Текущая строка
if(Index != StringGrid1->RowCount-1) // Если вообще выбрана какая-нибудь строка
  {
    if(Index==(StringGrid1->RowCount-1))   //Если это последняя строка
    {
      StringGrid1->RowCount--;   // Удалить последнюю строку
    }
    else {
  for(int i=Index; i<StringGrid1->RowCount-1; i++) // С текущей строки до последней
    StringGrid1->Rows[i] = StringGrid1->Rows[i+1]; // Затереть текущую строку следующей
    StringGrid1->RowCount--; // Удалить последнюю строку
    }
  }
 
}
kirillkost вне форума Ответить с цитированием
Старый 17.11.2014, 23:29   #2
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

разверни цикл взад.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 18.11.2014, 00:03   #3
kirillkost
 
Регистрация: 11.12.2012
Сообщений: 3
По умолчанию

Цитата:
Сообщение от min@y™ Посмотреть сообщение
разверни цикл взад.
а что собственно изменится ?
kirillkost вне форума Ответить с цитированием
Старый 18.11.2014, 00:06   #4
min@y™
Цифровой кот
Старожил
 
Аватар для min@y™
 
Регистрация: 29.08.2014
Сообщений: 7,629
По умолчанию

Цитата:
Сообщение от kirillkost Посмотреть сообщение
а что собственно изменится ?
а ты попробуй. рекомендүю, для начала, потренироваться на TListBox - поудалять одним циклом из него выделенные строки.
Расскажу я вам, дружочки, как выращивать грибочки: нужно в поле утром рано сдвинуть два куска урана...
min@y™ вне форума Ответить с цитированием
Старый 18.11.2014, 07:37   #5
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Да не, тут инверсия в цикле врядли поможет.
Цитата:
Последнюю строку почему-то не удаляет
Что это вообще за алгоритм странный?
Цитата:
if(Index != StringGrid1->RowCount-1) // Если вообще выбрана какая-нибудь строка
Это не если выбрана строка, а если она последняя.
Цитата:
int Index = StringGrid1->Selection.Top; // Текущая строка
Вообще неясно... Ты что поставил мультиселект на строки, и за один раз хочешь удалять несколько строк?
I'm learning to live...
Stilet вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Алгоритм удаления диагонали в TetColor Smogg Помощь студентам 2 12.07.2013 11:04
Способы удаления элемента массива в StringGrid dariya.95 Помощь студентам 23 28.06.2013 23:09
Где ошибка?(строки,Паскаль) yr_4 Помощь студентам 0 22.12.2010 22:31
Не могу понять где ошибка при сортировке строки!? Dema91 Помощь студентам 1 14.04.2010 20:11
С++ Builder, строки. Не вижу где ошибка. ernie Помощь студентам 2 23.12.2009 19:38