Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

Быстрый поиск в 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]

> Кол-во элементов может быть маленьким, а может быть и очень
> большим&#133

Если элементов много, то комбо бокс не годится.


 
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;
Скачать: CL | DM;

Наверх




Память: 0.52 MB
Время: 0.018 c
2-1210232151
troyan_81
2008-05-08 11:35
2008.06.01
ValueListEditor1 - Как юзать?


2-1209974640
zordoc
2008-05-05 12:04
2008.06.01
Помогите с поиском по документу


15-1208423289
shlst
2008-04-17 13:08
2008.06.01
DVD на ноуте с P2-mmx 230мгц и win98


4-1188290808
DimonNew
2007-08-28 12:46
2008.06.01
События от мыши и графического планшета, разделить


2-1209926535
Berkut
2008-05-04 22:42
2008.06.01
Ассемблерные вставки