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

Вниз

Поиск строки в Listbox в разных регистрах и не с начала строки   Найти похожие ветки 

 
Spartak ©   (2003-04-30 11:32) [0]

просмотрел 2 примера как найти строку в listbox :

if InputQuery("Поиск ", "Введите название или его первые буквы", Strk) then
ListBox1.Perform(LB_SELECTSTRING,-1,longint(Pchar(strk)));

так вот как сделать чтобы строка искалась при совпадении хотя бы 2-3 символов .
Например у меня такой список

c:\m\d\f\ggg\sss\1.txt
c:\m\d\f\ggg\sss\2.txt
c:\m\d\f\ggg\sss\3.txt
c:\m\d\f\ggg\sss\4.txt
c:\m\d\f\ggg\sss\5.txt
c:\m\d\f\ggg\sss\6.txt
c:\m\d\f\ggg\sss\7.txt

и чтобы пользователь мог ввести всего 4.txt и ему будет найдена эта строка .

а в примере который я дал , ищеться только символы с начала строки


 
stone ©   (2003-04-30 12:14) [1]

ИМХО, тут в цикле перебирать придется используя pos или StrPos


 
Striker   (2003-04-30 12:59) [2]

а если записей очень много ? например несколько тысяч


 
Spartak ©   (2003-04-30 13:00) [3]

Да ! записей где то 5-9 тыс :( так что циклом не пойдёт ! :(

может можно как то подругому ?


 
stone ©   (2003-04-30 13:06) [4]


> Spartak © (30.04.03 13:00)

А в чем проблема? С начала ищется с первой строки до первого "вхождения" потом прерывается, если надо дальше, то ищешь соответственно уже не с первой строки


 
kres   (2003-04-30 13:20) [5]

Такая идея (получится или нет - не знаю, пробовать времени нет):
Использовать свойство LisnBox.Items.Text - весь список в одной строке. В нём найти pos и определить, к какой строке это относится (ближайшие слева-справа переводы строки).


 
Spartak ©   (2003-04-30 13:24) [6]

> kres

Идея хорошая ! а как реализовать не знаю :(

попробую что предложил stone


 
kres   (2003-04-30 13:36) [7]

> Spartak © (30.04.03 13:24)
> Идея хорошая ! а как реализовать не знаю :(

Ты программатор или нет? :)

> попробую что предложил stone

А если у тебя первое вхождение будет в 8999-й строке (из 9000)? Тогда твоя прога заглохнет на некоторое время.

Кстати, ещё одна идея: тот же принцип, что и у предыдущей, только использовать не саму строку (String), а указатель (PChar), может быстрее будет работать.


 
Spartak ©   (2003-04-30 13:56) [8]

да ... хорошо бы примерчик ! то есть кодом если не трудно


 
ASMiD ©   (2003-04-30 14:21) [9]

Господа!
О чем спор?
Все подобные задачи решаются перебором.
Весь вопрос в том, что если есть какая-то закономерность в расположении строк - тогда можно попытаться ускорить поиск.
Кстати, PChar - и операции с ним выполняются медленнее, чем с
String.
И еще по поводу закономерностей.
Возможно есть смысл предварительно отсортировать строки по какому-либо признаку.



Страницы: 1 вся ветка

Текущий архив: 2003.05.12;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.008 c
1-34497
UserMicc
2003-04-28 18:01
2003.05.12
По поводу таймера...


14-34558
Карлсон
2003-04-23 16:09
2003.05.12
Бойкот.


1-34388
KIE
2003-04-28 12:53
2003.05.12
Задержка по времени


14-34612
DiamondShark
2003-04-21 17:40
2003.05.12
Слово


8-34513
antonn
2003-02-01 09:54
2003.05.12
dsound.dcu not found