Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Прочее";
Текущий архив: 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]

> Кол-во элементов может быть маленьким, а может быть и очень
> большим&#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;
Скачать: [xml.tar.bz2];

Наверх




Память: 0.5 MB
Время: 0.044 c
3-1198595059
Vlad Oshin
2007-12-25 18:04
2008.06.01
Подскажите с запросом sql


2-1210342406
DooRs
2008-05-09 18:13
2008.06.01
Формула


2-1210236064
DimA
2008-05-08 12:41
2008.06.01
Как доработать Splitter ?


2-1210096869
Dron2
2008-05-06 22:01
2008.06.01
Если ошибка соединения - закрыть приложение. Как это сделать?


15-1208512350
Чёрный
2008-04-18 13:52
2008.06.01
В какой области программирования больше платят денег?





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский