-
Как наиболее быстро пройтись по элементам комбобокса и оставить из них только удовлетворяющие условию? Кол-во элементов может быть маленьким, а может быть и очень большим... Нужно САМЫЙ БЫСТРЫЙ способ, обычный цикл будет страшно тормозить...
-
> TIF © (15.04.08 23:56) > Как наиболее быстро пройтись по элементам комбобокса и оставить > из них только удовлетворяющие условию? Кол-во элементов > может быть маленьким, а может быть и очень большим... > Нужно САМЫЙ БЫСТРЫЙ способ, обычный цикл будет страшно тормозить. > ..
Без предварительной обработки - только за O(N), IMHO.
-
> обычный цикл будет страшно тормозить...
Сам по себе цикл тормозить не будет. Тормозить может проверка на условие.
> а может быть и очень большим...
сколько? миллиард? а зачем пихать в комбобокс огромное количество записей вообще?
-
> Кол-во элементов может быть маленьким, а может быть и очень > большим
Если элементов много, то комбо бокс не годится.
-
> TIF (15.04.2008 23:56:00) [0]
Откуда берутся данные и много их?
-
> Как наиболее быстро пройтись по элементам комбобокса и оставить > из них только удовлетворяющие условию
А почему оставить, не логичнее ли не пихать туда лишнее? :) Проверяем данные (где бы они не лежали) и удовлетворяющие условиям добавляем в комбо.
-
> Real © (16.04.08 02:40) [5] > >
АП уже спросил.
-
> АП уже спросил.
АП спросил откуда и скока, а я хочу узнать почему комбо вообще взят за хранилище :)
-
Ага... Понял, куда вы клоните ;)
Значит, в ComboBox хранятся все запросы пользователя, которые он туда вписывал... А нужно при вводе как, например, IE, показать выпадающий список с элементами, начинающимися с заданных символов...
Хм... Хранить-то можно и не в ComboBox... Но мне всякие DBGrid не по душе...
Количество данных, конечно, можно ограничить - например, только 100 последних. Но всё-таки, быстро пройтись по всем элементам никак?
-
> Но всё-таки, быстро пройтись по всем элементам никак?
Делаешь двоичное дерево по первым буквам запросов :-) типо того
Д-Е - Р - Е - В -О
| \
| Б- Р -И
\
Р -Я - Н - Ь
И К списочку или масивчику приаттачиваешь И выбираешь - перебирает огромное количество по певым буквам оч быстро. Или как вариант - memtable.
-
в memo надо хранить
-
> [8] TIF © (16.04.08 17:21)
Заметь, в IE вылетает с предлогаемым списком не Комбик
-
> в IE вылетает с предлогаемым списком не Комбик
в IE вообще многое по уму сделано.
-
> Значит, в ComboBox хранятся все запросы пользователя, которые > он туда вписывал...
Вообще-то в нем хранится только то, что программист решил там хранить. И то до определенного момента, пока комбик жив или принудительно не почищен.
-
> Заметь, в IE вылетает с предлогаемым списком не Комбик
Заметил, там ещё resize предусмотрен... Это видимо там что-то похожее очень на ListBox...
> в memo надо хранить
Так что думаю либо использовать Edit в паре с ListBox + заезженное: ListBox1.Perform(LB_SELECTSTRING,-1,longint(Pchar(Edit1.text)));
> в IE вообще многое по уму сделано
:) А в FF нет?
> Вообще-то в нем хранится только то, что программист решил > там хранить. И то до определенного момента, пока комбик > жив или принудительно не почищен.
Я в курсе :) Данные будут храниться естественно вреестре или в файле... А потом мы их туда и подгрузим
Хотя, наверное лучше просто пройтись по листбоксу (лучше виртуальному), найти нужные строчки, а потом их добавить в комбобокс... Но если юзер просто захочет просмотреть список комбобокса? Придётся туда всё кидать и потом снова очищать... Задал я себе мороку...
Вот видел IEAddress - этот компонент как раз и выполняет то что мне нужно... но там доступен только список url-ов
-
> TIF (16.04.2008 17:21:08) [8]
В данном случае совсем не обязательно что то фильровать, в комбо итеративный поиск, достаточно упорядочить по алфавиту
|