Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Мультимедиа в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 29.04.2010, 13:02   #1
nXs
Форумчанин
 
Регистрация: 26.02.2010
Сообщений: 126
По умолчанию Поиск по вхождению(плейлист)

Помогите, пожалуйста, или ткныте ссылкой, не могу найти. Как сделать поиск по плейлисту, при изменении в edit чтоб находило похожую строку в плейлисте и на ней останавливалось (в инете чет нашел, но у меня почему то не срабатывает). Вот мой нерабочий код:
Код:
function searchinc(fs, str:string):boolean;
var
  ps: integer;
begin
  ps := Pos(fs, str);
  if ps <> 0 then
    Result := true
  else
    Result := false;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
begin
for i:=0 to PlayList.Count-1 do
if SearchInc(Edit1.Text, PChar(PlayList.Items[i]))=true then
begin
PlayList.ItemIndex:=i;
PlayList.Selected[i];
PlayList.Repaint;
exit;
end else
continue;
end;

Последний раз редактировалось nXs; 29.04.2010 в 13:18.
nXs вне форума Ответить с цитированием
Старый 29.04.2010, 13:59   #2
nXs
Форумчанин
 
Регистрация: 26.02.2010
Сообщений: 126
По умолчанию

Вот поправил код, может кто сможет улутшить:
Код:
function searchinc(fs, str:string):boolean;
var
  ps: integer;
begin
  if str<>'' then
  begin
  ps := Pos(fs, str);
  if ps <> 0 then
    Result := true
  else
    Result := false;
    end;
end;

procedure TForm1.Edit1Change(Sender: TObject);
var
i:integer;
begin
if Edit1.Text<>'' then
begin
PlayList.MultiSelect:=false;
for i:=0 to PlayList.Count-1 do
begin
PlayList.ItemIndex:=i;
if SearchInc(Edit1.Text, PChar(PlayList.Items[PlayList.ItemIndex]))=true then
exit else
end;
end;
PlayList.Selected[i]:=true;
PlayList.Repaint;
end;

procedure TForm1.Edit1Click(Sender: TObject);
begin
Edit1.Clear;
end;
nXs вне форума Ответить с цитированием
Старый 29.04.2010, 21:12   #3
mutabor
Телепат с дипломом
Старожил
 
Аватар для mutabor
 
Регистрация: 10.06.2007
Сообщений: 4,929
По умолчанию

Поиск по вхождению по-моему иначе как полным перебором не сделаешь, т.к. нужно искать вхождение внутри строки, двоичный поиск тут не прокатит. Перебор + Pos, что у Вас и реализовано, тут улучшать особо и нечего. А хотя, можно улучшить показ результатов, чтобы не останавливалась функция при первой же находке, а показывала все строки с этим вхождением, но это уже что-то вроде отчета получится.
The future is not a tablet with a 9" screen no more than the future was a 9" black & white screen in a box. It’s the paradigm that survives. (Kroc Camen)
Проверь себя! Онлайн тестирование | Мой блог
mutabor вне форума Ответить с цитированием
Старый 08.05.2010, 16:43   #4
nXs
Форумчанин
 
Регистрация: 26.02.2010
Сообщений: 126
По умолчанию

Она какая то глючная, не всегда останавливает, и если в листбоксе много итемов, то так глючит, что просто ужас.
nXs вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
BassPlayer плейлист Alex2009 Мультимедиа в Delphi 13 12.03.2010 19:07
MediaPlayer плейлист pnz_punisher Общие вопросы Delphi 5 10.01.2010 00:58
Плейлист в Delphi iggor Мультимедиа в Delphi 17 30.12.2009 11:56
Добавление файлов в плейлист Dr.Badnezz Мультимедиа в Delphi 12 26.01.2009 18:06
Помогите реализовать плейлист IGREK Общие вопросы Delphi 2 04.06.2008 09:08