На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
[!] Как относитесь к модерированию на этом форуме? Выскажите свое мнение здесь
Страницы: (2) 1 [2]  все  ( Перейти к последнему сообщению )  
> ListBox , Поиск подстроки
    А все получилось, надо было к регистру общему привести
      Цитата sten_11 @
      Дело в том, что я не хочу в рамках этой задачи связываться с БД

      на билдере это нск. строк кода.
        Цитата shm @
        вроде автора перебор не устраивал, а теперь вроде поменял мнение.

        А что делать ))

        Добавлено
        Итого получилось
        ExpandedWrap disabled
          void __fastcall TForm1::Edit1Change(TObject *Sender)
          {
          ListBox2->Clear();
          int i=0;
          bool compre = false;
          while (i<ListBox1->Items->Count)
           {
            compre = ListBox1->Items->Strings[i].Pos(Edit1->Text.Trim());
            if (compre)
            {
             ListBox2->Items->Add(ListBox1->Items->Strings[i]);
            }
            compre = false;
            i++;
           }
          }

        Принимаю более оптимальные коды.

        Добавлено
        В догонку. Как в Мемо вывести строку из ListBox на которой активный курсор. Можно по двойному клику на ListBox .
          Цитата sten_11 @
          более оптимальные коды

          а почему compre - bool и зачем compre = false?
            Цитата Relaxander @
            а почему compre - bool и зачем compre = false?

            Справедливо
            ExpandedWrap disabled
              if (ListBox1->Items->Strings[i].Pos(Edit1->Text.Trim()))
              Цитата Relaxander @
              а слона-то никто и не заметил. AnsiPos возвращает > 0, если находит

              По памяти писал, спутал наверное с -1.
              Сообщение отредактировано: Bas -
                Народ, простите что тему старую поднимаю. Мне пригодилась эта ветка. Но появился вопрос. Есть ли возможность из этого кода убрать чувствительность к регистру?

                У меня получилось только привести всё к нижнему регистру. Но некоторые люди и грамотно пишут и будут писать первую букву большую. Тогда фильтрация уже не срабатывает.

                ExpandedWrap disabled
                  ListBox2->Clear();
                  int i=0;
                  bool compre = false;
                  while (i<ListBox1->Items->Count)
                   {
                    compre = ListBox1->Items->Strings[i].LowerCase().Pos(Edit1->Text.Trim());
                    if (compre)
                    {
                     ListBox2->Items->Add(ListBox1->Items->Strings[i]);
                    }
                    compre = false;
                    i++;
                   }
                  Убрать чувствительность, это так:
                  ExpandedWrap disabled
                    ListBox2->Clear();
                    int i = 0;
                    while( i<ListBox1->Items->Count )
                    {
                        int compre = ListBox1->Items->Strings[i].LowerCase().Pos( Edit1->Text.LowerCase().Trim() );
                        if( compre ) ListBox2->Items->Add( ListBox1->Items->Strings[i] );
                        i++;
                    }
                    И как я сам не додумался :D Спасибо. Отлично работает.
                    0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                    0 пользователей:


                    Рейтинг@Mail.ru
                    [ Script execution time: 0,0324 ]   [ 16 queries used ]   [ Generated: 16.04.24, 19:53 GMT ]