Страница: 1 |
Пишу программу и хочу туда впихнуть интеллектуальный ввод, т.е. вводишь, например, букву А, а появляется список со словами на букву А. Кто знает как это делать ПОМОГИТЕ! За раннее, спасибо!
Во-первых надо куда-нибудь сохранить список слов, который ты хочешь выводить, т.е. создать словарь (может это можно сделать какими-нибудь средствами Word, воспользоваться его словарем). Во-вторых нужно иметь быстрый доступ к словарю + быстро выводить слова из словаря... Обдумай конкретнее что бы ты хотел сделать, а потом напиши сюда, может подскажу пару алгоритмов Если слов немного, то можно держать их в текстовом файле, по необходимости или при запуске считыватьих в строку затем в массив. sArray()=split(saAllWords,vbcrlf) так кажись. Потом в цикле с использованием If Left$(... выбирать подходящее. Если слов много, то можно загнать их в базу данных и выбирать оттуда с помощью запроса Like Информация к размышлению: Теперь как хранить. Думаю, сортировать не обязательно (хотя это не проблема, есть алгоритм). Ведь перебирать придется весь массив. Мудохаться с условием: прекратились совпадения - выход из цикла, дороже будет. Хотя... Критерий тут время, можно проверить, кто желает. А Т9, там немного другое. Там нажимаешь клавишу, а телефон решает. какую из 3-4-х букв ты имел ввиду. Так я эту Т9 имел... Сразу отключил и забыл про нее. To Malyav: Чтобы алгоитм, описанный тобой в ответе 3 работал красиво, список должен быть отсортирован, и должна проводится проверка на "ПОСЛЕДНЕЕ совпадение" чтобы не пришлось перебирать ВЕСЬ массив. Уже давно доказано что это оптимальнее. В любом случае Len() исполняется на много дольше чем If(...) Then Страница: 1 |
Вопрос: Интеллектуальный ввод
Добавлено: 17.10.03 19:30
Автор вопроса: Punk
Ответы
Всего ответов: 6
Номер ответа: 1
Автор ответа:
Chill
ICQ: 554200
Вопросов: 101
Ответов: 343
Профиль | | #1
Добавлено: 17.10.03 20:17
Номер ответа: 2
Автор ответа:
.COM
ICQ: 212158853
Вопросов: 4
Ответов: 79
Профиль | | #2
Добавлено: 17.10.03 23:29
...ага...И еще куда вводишь букву и где должен появиться список...
Номер ответа: 3
Автор ответа:
Malyav
ICQ: 8440085
Вопросов: 15
Ответов: 117
Web-сайт:
Профиль | | #3
Добавлено: 20.10.03 11:13
Номер ответа: 4
Автор ответа:
RotesByte
Вопросов: 11
Ответов: 69
Web-сайт:
Профиль | | #4
Добавлено: 20.10.03 13:43
Практически во всех более-менее современных мобильниках реализована такая система. Называется "T9" (по-английски). Поищи, может придогится...
Вот для начала: http://www.ixbt.com/mobile/review/prtxtsms.shtml
Если список недлинный (слов 500-1000), то можно и в массиве, но список обязан быть отсортирован (вместо индекса). Но если записей много, то тут стоит рассмотреть возможность\целесообразность использования
- Dictionary Object - хитрый объект в VB, смотри MSDN
- DAO\ADO - база данных
Номер ответа: 5
Автор ответа:
Malyav
ICQ: 8440085
Вопросов: 15
Ответов: 117
Web-сайт:
Профиль | | #5
Добавлено: 20.10.03 13:58
Номер ответа: 6
Автор ответа:
RotesByte
Вопросов: 11
Ответов: 69
Web-сайт:
Профиль | | #6
Добавлено: 20.10.03 15:47
Что сработает быстрее в массиве из 1000 записей:
- например, 500 раз вызвать Len() и 501 раз проверить состояние флага типа Boolean (прекратить\непрекратить) и выйти
или
- все 1000 раз вызвать Len() ?