Поиск:

Ответ в темуСоздание новой темы Создание опроса
> удаление элементов из ListBox 
:(
    Опции темы
getUp
Дата 4.10.2009, 22:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



как удалить элемент в listbox начинающийся с определенного символа\символов? причем все элементы сразу 
PM MAIL   Вверх
Anikmar
Дата 4.10.2009, 23:21 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Пройдитесь циклом по элементам и удалите те, которые начинаются с нужного символа.

Единственная фишка тут в том, что при удалении элемента оставшиеся сдвигаются, это надо учитывать.
PM MAIL ICQ   Вверх
getUp
Дата 4.10.2009, 23:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



а можно код?
PM MAIL   Вверх
Anikmar
Дата 4.10.2009, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(getUp @  4.10.2009,  23:24 Найти цитируемый пост)
а можно код? 

А ваш сначала можно? Как лист-бокс называется, и т.п. Что у вас есть на сегодняшний момент?
PM MAIL ICQ   Вверх
Данкинг
Дата 4.10.2009, 23:28 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(Anikmar @  5.10.2009,  00:21 Найти цитируемый пост)
Единственная фишка тут в том, что при удалении элемента оставшиеся сдвигаются, это надо учитывать. 

Для этого надо идти снизу вверх. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
Anikmar
Дата 4.10.2009, 23:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Завсегдатай
Сообщений: 2513
Регистрация: 26.11.2006
Где: Санкт-Петербург

Репутация: 34
Всего: 59



Цитата(Данкинг @  4.10.2009,  23:28 Найти цитируемый пост)
Для этого надо идти снизу вверх.

Это я и назвал "фишкой"  smile 

Вовсе не обязательно, кстати, - можно притормаживать итератор при удалении.
PM MAIL ICQ   Вверх
getUp
Дата 4.10.2009, 23:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



у меня вот что только получилось
Код

void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    int A = Edit1->Text.Length();
    for(int i = 0; i < ListBox1->Count; ++i)
    {
        if(ListBox1->Items->Strings[i].SubString(1,A)==Edit1->Text)
        {
            ListBox1->Items->Delete(i) ;
            break;
        }
    }
}

PM MAIL   Вверх
Данкинг
Дата 5.10.2009, 00:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



getUp, во-первых, сделай всё же сверху вниз (от общего числа строк листбокса до нуля), а, во-вторых, зачем там break? Надо же все элементы удалить, а не один.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
getUp
Дата 5.10.2009, 00:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



Код

void __fastcall TForm1::Edit1Change(TObject *Sender)
{
    int A = Edit1->Text.Length();
    for(int i = ListBox1->Count; i > 0; --i)
    {
        if(ListBox1->Items->Strings[i].SubString(1,A)==Edit1->Text)
        {
            ListBox1->Items->Delete(i) ;
        }
    }
}

 
выдает ошибку Project Project1.exe raised exception class EStringListError with message 'List index out of bounds (7)'.
PM MAIL   Вверх
smoke_man
Дата 5.10.2009, 01:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 447
Регистрация: 25.1.2007
Где: Рязань

Репутация: 9
Всего: 17



Код

for(int i = ListBox1->Count-1; i >= 0; --i)



--------------------
0x2b|~0x2b
PM MAIL ICQ GTalk   Вверх
Artemon
Дата 5.10.2009, 06:26 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


а ты мне нравишься
***


Профиль
Группа: Завсегдатай
Сообщений: 1771
Регистрация: 24.2.2004
Где: Челябинск

Репутация: 7
Всего: 20



Код

for(int i = ListBox1->Count; --i;)




--------------------
Контроль топлива на топливозаправщиках, мониторинг автотранспорта, расчет зарплаты водителей www.rscat.ru
PM MAIL   Вверх
Данкинг
Дата 5.10.2009, 10:44 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



getUp, нумерация строки листбокса начинается с нуля. smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
getUp
Дата 5.10.2009, 14:08 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



спасибо

_______________________

теперь появился новый вопрос. что делать если в листбоксе больше тысячи элементов, даже больше трех тысяч

Это сообщение отредактировал(а) getUp - 5.10.2009, 14:19
PM MAIL   Вверх
Данкинг
Дата 5.10.2009, 14:24 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 11
Всего: 130



Цитата(getUp @  5.10.2009,  15:08 Найти цитируемый пост)
теперь появился новый вопрос. 

В новую тему. smile 

Цитата(getUp @  5.10.2009,  15:08 Найти цитируемый пост)
что делать если в листбоксе больше тысячи элементов, даже больше трех тысяч

А что надо делать? smile  smile 


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
getUp
Дата 5.10.2009, 14:32 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 18
Регистрация: 4.10.2009

Репутация: нет
Всего: нет



похоже надо делать как-то по другому...

вобщем программа эмулятор Т9 (телефонный словарь). я думал сделать так:
1.в листбокс загружаю словарь
2.в edit начинаю нажимать на кнопки (q,w,e,a,s,d,z,x,c)
2.при нажатии на кнопку (допустим w) из листбокса удаляются все слова которые не начинаются на а,б,в,г.
3.при нажатии на другую кнопку (допустим e) удаляются из оставшихся слов те в которых вторая буква не д,е,ж,з.

вот. но судя по тому как она работает, надо думать как сделать по другому.
PM MAIL   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "С++ Builder"
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по С++ Builder обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Настоятельно рекомендуем заглянуть в DRKB (Delphi Russian Knowledge Base) - крупнейший в рунете сборник материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | C++ Builder | Следующая тема »


 




[ Время генерации скрипта: 0.0536 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.