Форум: "Прочее";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
ВнизБыстрый поиск в ComboBox Найти похожие ветки
← →
TIF © (2008-04-15 23:56) [0]Как наиболее быстро пройтись по элементам комбобокса и оставить из них только удовлетворяющие условию? Кол-во элементов может быть маленьким, а может быть и очень большим...
Нужно САМЫЙ БЫСТРЫЙ способ, обычный цикл будет страшно тормозить...
← →
ProgRAMmer Dimonych © (2008-04-15 23:58) [1]> TIF © (15.04.08 23:56)
> Как наиболее быстро пройтись по элементам комбобокса и оставить
> из них только удовлетворяющие условию? Кол-во элементов
> может быть маленьким, а может быть и очень большим...
> Нужно САМЫЙ БЫСТРЫЙ способ, обычный цикл будет страшно тормозить.
> ..
Без предварительной обработки - только за O(N), IMHO.
← →
DVM © (2008-04-15 23:59) [2]
> обычный цикл будет страшно тормозить...
Сам по себе цикл тормозить не будет. Тормозить может проверка на условие.
> а может быть и очень большим...
сколько? миллиард? а зачем пихать в комбобокс огромное количество записей вообще?
← →
Kolan © (2008-04-16 00:15) [3]> Кол-во элементов может быть маленьким, а может быть и очень
> большим…
Если элементов много, то комбо бокс не годится.
← →
Anatoly Podgoretsky © (2008-04-16 00:43) [4]> TIF (15.04.2008 23:56:00) [0]
Откуда берутся данные и много их?
← →
Real © (2008-04-16 02:40) [5]
> Как наиболее быстро пройтись по элементам комбобокса и оставить
> из них только удовлетворяющие условию
А почему оставить, не логичнее ли не пихать туда лишнее? :) Проверяем данные (где бы они не лежали) и удовлетворяющие условиям добавляем в комбо.
← →
Германн © (2008-04-16 02:45) [6]
> Real © (16.04.08 02:40) [5]
>
>
АП уже спросил.
← →
Real © (2008-04-16 02:53) [7]
> АП уже спросил.
АП спросил откуда и скока, а я хочу узнать почему комбо вообще взят за хранилище :)
← →
TIF © (2008-04-16 17:21) [8]Ага... Понял, куда вы клоните ;)
Значит, в ComboBox хранятся все запросы пользователя, которые он туда вписывал... А нужно при вводе как, например, IE, показать выпадающий список с элементами, начинающимися с заданных символов...
Хм... Хранить-то можно и не в ComboBox... Но мне всякие DBGrid не по душе...
Количество данных, конечно, можно ограничить - например, только 100 последних. Но всё-таки, быстро пройтись по всем элементам никак?
← →
tesseract © (2008-04-16 17:43) [9]
> Но всё-таки, быстро пройтись по всем элементам никак?
Делаешь двоичное дерево по первым буквам запросов :-) типо того
Д-Е - Р - Е - В -О
| \
| Б- Р -И
\
Р -Я - Н - Ь
И К списочку или масивчику приаттачиваешь
И выбираешь - перебирает огромное количество по певым буквам оч быстро. Или как вариант - memtable.
← →
Игорь Шевченко © (2008-04-16 17:49) [10]в memo надо хранить
← →
Dennis I. Komarov © (2008-04-16 17:51) [11]> [8] TIF © (16.04.08 17:21)
Заметь, в IE вылетает с предлогаемым списком не Комбик
← →
Игорь Шевченко © (2008-04-16 17:52) [12]
> в IE вылетает с предлогаемым списком не Комбик
в IE вообще многое по уму сделано.
← →
evvcom © (2008-04-16 18:03) [13]
> Значит, в ComboBox хранятся все запросы пользователя, которые
> он туда вписывал...
Вообще-то в нем хранится только то, что программист решил там хранить. И то до определенного момента, пока комбик жив или принудительно не почищен.
← →
TIF © (2008-04-16 18:17) [14]
> Заметь, в IE вылетает с предлогаемым списком не Комбик
Заметил, там ещё resize предусмотрен...
Это видимо там что-то похожее очень на ListBox...
> в memo надо хранить
Так что думаю либо использовать Edit в паре с ListBox + заезженное:
ListBox1.Perform(LB_SELECTSTRING,-1,longint(Pchar(Edit1.text)));
> в IE вообще многое по уму сделано
:) А в FF нет?
> Вообще-то в нем хранится только то, что программист решил
> там хранить. И то до определенного момента, пока комбик
> жив или принудительно не почищен.
Я в курсе :) Данные будут храниться естественно вреестре или в файле... А потом мы их туда и подгрузим
Хотя, наверное лучше просто пройтись по листбоксу (лучше виртуальному), найти нужные строчки, а потом их добавить в комбобокс... Но если юзер просто захочет просмотреть список комбобокса? Придётся туда всё кидать и потом снова очищать... Задал я себе мороку...
Вот видел IEAddress - этот компонент как раз и выполняет то что мне нужно... но там доступен только список url-ов
← →
Anatoly Podgoretsky © (2008-04-16 20:02) [15]> TIF (16.04.2008 17:21:08) [8]
В данном случае совсем не обязательно что то фильровать, в комбо итеративный поиск, достаточно упорядочить по алфавиту
← →
No_Dead © (2008-04-17 00:40) [16]> Данные будут храниться естественно вреестре
реестр рассматривается как альтернатива для хранения данных?))
ЗЫ. зря не прислушался к идеи бить по пальцам клавиатурой из вирусоописательной ветки
← →
Германн © (2008-04-17 01:26) [17]
> No_Dead © (17.04.08 00:40) [16]
>
> > Данные будут храниться естественно вреестре
>
> реестр рассматривается как альтернатива для хранения данных?
> ))
>
> ЗЫ. зря не прислушался к идеи бить по пальцам клавиатурой
> из вирусоописательной ветки
>
+1
← →
ferr (2008-04-17 01:38) [18]Уместен подход подобный [9], только оно никак не двоичное. Данная струкутура данных называется trie(на русском обычно бор).
← →
tesseract © (2008-04-17 11:35) [19]
> только оно никак не двоичное. Данная струкутура данных
> называется trie(на русском обычно бор).
tree оно, дерево по русски так и называеться, подвид графа. Это просто блоксхема, можно и двоичное по математике сделать, с балансировкой проблем меньше.
← →
TIF © (2008-04-17 18:48) [20]
> > No_Dead © (17.04.08 00:40) [16]
> >
> > > Данные будут храниться естественно вреестре
> >
> > реестр рассматривается как альтернатива для хранения данных?
>
> > ))
> >
> > ЗЫ. зря не прислушался к идеи бить по пальцам клавиатурой
>
> > из вирусоописательной ветки
> >
>
> +1
Хе-хе, майкрософту можно, а мне нет?! ДИСКРИМИНАЦИЯ :)
← →
Real © (2008-04-18 04:07) [21]
> Хотя, наверное лучше просто пройтись по листбоксу (лучше
> виртуальному), найти нужные строчки, а потом их добавить
> в комбобокс...
Не листбох, а - стринглист, не добавить, а - ассигн! :)
Страницы: 1 вся ветка
Форум: "Прочее";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
Память: 0.5 MB
Время: 0.049 c