Модераторы: Poseidon, Snowy, bems, MetalFan
  

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Интерактивный поиск, помогите сделать 
:(
    Опции темы
FlaGmaN
Дата 13.6.2007, 15:30 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Новичок



Профиль
Группа: Участник
Сообщений: 46
Регистрация: 2.9.2006
Где: Москва

Репутация: нет
Всего: нет



Добрые люди. Помогите сделать интерактивый поиск.

Сама задача. Я постепено ввожу буквы. прога постоянно сверяет мою строку с объектами поиска, постепенно оставляя только нужное. Прошу подкинуть алгоритм,  а если можно то еще и кусочек программы.

Может я не ясно выражаюсь, но насколько я помню... В офисе такой же поиск в справке..... зарание спасибо. очень надо! smile 
PM MAIL WWW ICQ   Вверх
Snowy
Дата 13.6.2007, 15:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Это называется ComboBox
Переключи его в режим Simple и получишь, что хочешь.
Подставляться будут варианты из Items
PM MAIL   Вверх
m0ro
Дата 13.6.2007, 15:38 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 800
Регистрация: 19.5.2007

Репутация: 1
Всего: 68



А в чем проблема? Бери любой алгоритм поиска по вхождению, только оттестируй, выбери самый быстрый и вперед.. по KeyUp, например, сверяйся...
PM MAIL   Вверх
Snowy
Дата 13.6.2007, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(m0ro @  13.6.2007,  15:38 Найти цитируемый пост)
 Бери любой алгоритм поиска по вхождению, только оттестируй, выбери самый быстрый и вперед.. по KeyUp,
А зачем?
Всё ж уже для нас сделано...
Зачем писать новый велосипед, когда есть готовое...
PM MAIL   Вверх
Sunvas
Дата 13.6.2007, 20:11 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



А автору точно нужен ComboBox?


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
Snowy
Дата 13.6.2007, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Автору нужен Edit с автодополнением.
Это и есть ComboBox в режиме Simple.
PM MAIL   Вверх
Sunvas
Дата 13.6.2007, 20:31 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



А, понял почему ты так думаешь. По 
Цитата(FlaGmaN @  13.6.2007,  15:30 Найти цитируемый пост)
 В офисе такой же поиск в справке

догадался!  smile 



--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
mutex
Дата 13.6.2007, 20:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 56
Регистрация: 17.10.2004

Репутация: нет
Всего: 3



FlaGmaN, я делаю похожее действие для баз данных. Можете посмотреть работу программы: http://www.wincmd.ru/plugring/xBaseView.html
Если это заинтересует, могу поделиться идеей для БД,
PM MAIL   Вверх
m0ro
Дата 13.6.2007, 21:50 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 800
Регистрация: 19.5.2007

Репутация: 1
Всего: 68



2Snowy - а откуда ComboBox-y знать, что напишет юзер в запросе и как он фразу будет формулировать? ;)
PM MAIL   Вверх
Sunvas
Дата 13.6.2007, 21:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Соль и сахар
****


Профиль
Группа: Участник
Сообщений: 3388
Регистрация: 12.3.2006
Где: Тосно

Репутация: 28
Всего: 89



m0ro, ну ты хотя бы сделай, как написал Snowy. Авось сам догадаешься.


--------------------
Воспитывая детей по своему образу и подобию, родители почему-то надеются, что они будут лучше их.
PM MAIL   Вверх
HAS
Дата 13.6.2007, 22:05 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Ing
*


Профиль
Группа: Участник
Сообщений: 170
Регистрация: 1.3.2005
Где: Internet

Репутация: 1
Всего: 2



Код

Edit1.SelStart
Edit1.SelLength

PM MAIL   Вверх
Snowy
Дата 13.6.2007, 22:39 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Эксперт
****


Профиль
Группа: Модератор
Сообщений: 11363
Регистрация: 13.10.2004
Где: Питер

Репутация: 192
Всего: 484



Цитата(m0ro @  13.6.2007,  21:50 Найти цитируемый пост)
2Snowy - а откуда ComboBox-y знать, что напишет юзер в запросе и как он фразу будет формулировать? ;)
Он будет подставлять ближайшее подходящее из списка Items

Добавлено через 2 минуты и 36 секунд
Простой пример.
Брось комбобокс на форму.
Задай стиль Simple.
Забей в Items слова: слон, стол, страус, страуструп
Запусти.
Набери с - подскажет "слон"
добавь т - подскажет "стол"
добавь р - подскажет "страус"
нажми вниз - подскажет "страуструп"
PM MAIL   Вверх
m0ro
Дата 14.6.2007, 08:46 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 800
Регистрация: 19.5.2007

Репутация: 1
Всего: 68



Это я знаю. Пользовался ComboBox-ом вышесказанным образом не раз. Но... 
Ведь в поиске чаще используются ПРОИЗВОЛЬНЫЕ фразы, все их не предопределишь заранее ;) Поиск - на то он и поиск, что пользователь пользуется не словарем, а своими запросами.. По заранее заданным фразам он может и в содержании хелпа посмотреть заголовки smile Потому предлагаю примерный алгоритм (поиск в нем - пример, он далеко не совершенен):

Код

Function TForm1.Find(const s, p : string) : integer;
var
  i, j : integer;
begin
  result := 0;
  if length(p) > length(s) then
    exit;
  for i := 1 to (length(s) - length(p) + 1) do
    for j := 1 to length(p) do
      if (p[j] <> s[i+j-1]) then
        break
      else
        if (j = length(p)) then
        begin
          result := i;
          exit;
        end;
end;

Procedure TForm1.Edit1Change(Sender: TObject);
var
  _find: integer;
begin
  _find := Find(Edit1.Text, 'Your some text');
  if (_find <> 0) then
    ShowMessage(':) Index - ' + IntToStr(_find))
  else
    ShowMessage(':(');
end;


P.S. Но, если Вы все же некий content-table для поиска предопределять планируете, то, конечно, пользуйтесь ComboBox.

Это сообщение отредактировал(а) m0ro - 14.6.2007, 09:07
PM MAIL   Вверх
aktuba
Дата 14.6.2007, 09:13 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Смышленный
***


Профиль
Группа: Завсегдатай
Сообщений: 1915
Регистрация: 24.4.2006
Где: Планета Земля

Репутация: 16
Всего: 38



m0ro, знаешь как устроены справочные системы? как я понял - ты именно подобное хочешь организовать... так вот - в справочном файле, обычно, помимо самого текста есть именно словарь всех слов, которые есть в текст. Сделано для того, чтобы поиск происходил моментально. Теперь тебе понятно, почему тебе советуют именно комбобокс?


--------------------
user posted image
PM MAIL WWW Skype   Вверх
m0ro
Дата 14.6.2007, 11:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**
Награды: 1



Профиль
Группа: Завсегдатай
Сообщений: 800
Регистрация: 19.5.2007

Репутация: 1
Всего: 68



2aktuba and All - smile))))))))))))))))))))))
я не открывал тему и не собираюсь организовывать справочные системы через ComboBox или еще что-либо подобное smile для этого есть свои форматы, начиная с chm и заканчивая HxS, которые имеют свои механизмы поиска и более удобны для этих целей. FlaGmaN задал вопрос, я назвал варианты решений. Все. smile
PM MAIL   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Общие вопросы"
SnowyMetalFan
bemsPoseidon
Rrader

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Общие вопросы | Следующая тема »


 




[ Время генерации скрипта: 0.0558 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.