Главная страница
    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.049 c
15-1208409848
vajo
2008-04-17 09:24
2008.06.01
Пара вопросов по Windows


6-1187942038
leonidus
2007-08-24 11:53
2008.06.01
Indy и обработка ошибок при работе с HTTP-прокси


15-1208425654
Динис_ИС
2008-04-17 13:47
2008.06.01
Список городов мира


2-1210649320
noviceman
2008-05-13 07:28
2008.06.01
Как передать запись (TMyRecord) в процедуру...


2-1210153969
Alex7
2008-05-07 13:52
2008.06.01
Флаговый параметр для CommandText ADODataSet к MS SQL





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский