Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Общий форум

Страница: 1 |

 

  Вопрос: Интеллектуальный ввод Добавлено: 17.10.03 19:30  

Автор вопроса:  Punk

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

Кто знает как это делать ПОМОГИТЕ!

За раннее, спасибо!

Ответить

  Ответы Всего ответов: 6  

Номер ответа: 1
Автор ответа:
 Chill



ICQ: 554200 

Вопросов: 101
Ответов: 343
 Профиль | | #1 Добавлено: 17.10.03 20:17

Во-первых надо куда-нибудь сохранить список слов, который ты хочешь выводить, т.е. создать словарь (может это можно сделать какими-нибудь средствами Word, воспользоваться его словарем).

Во-вторых нужно иметь быстрый доступ к словарю + быстро выводить слова из словаря...

Обдумай конкретнее что бы ты хотел сделать, а потом напиши сюда, может подскажу пару алгоритмов =)

Ответить

Номер ответа: 2
Автор ответа:
 .COM



ICQ: 212158853 

Вопросов: 4
Ответов: 79
 Профиль | | #2 Добавлено: 17.10.03 23:29
...ага...И еще куда вводишь букву и где должен появиться список...:)

Ответить

Номер ответа: 3
Автор ответа:
 Malyav



ICQ: 8440085 

Вопросов: 15
Ответов: 117
 Web-сайт: malyav.narod.ru
 Профиль | | #3
Добавлено: 20.10.03 11:13

Если слов немного, то можно держать их в текстовом файле, по необходимости или при запуске считыватьих в строку затем в массив.

sArray()=split(saAllWords,vbcrlf) так кажись.

Потом в цикле с использованием If Left$(... выбирать подходящее.

Если слов много, то можно загнать их в базу данных и выбирать оттуда с помощью запроса Like

Ответить

Номер ответа: 4
Автор ответа:
 RotesByte



Вопросов: 11
Ответов: 69
 Web-сайт: koch.onestop.net
 Профиль | | #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-сайт: malyav.narod.ru
 Профиль | | #5
Добавлено: 20.10.03 13:58

Думаю, сортировать не обязательно (хотя это не проблема, есть алгоритм). Ведь перебирать придется весь массив. Мудохаться с условием:  прекратились совпадения - выход из цикла, дороже будет. Хотя... Критерий тут время, можно проверить, кто желает.

А Т9, там немного другое. Там нажимаешь клавишу, а телефон решает. какую из 3-4-х букв ты имел ввиду. Так я эту Т9 имел... Сразу отключил и забыл про нее.

Ответить

Номер ответа: 6
Автор ответа:
 RotesByte



Вопросов: 11
Ответов: 69
 Web-сайт: koch.onestop.net
 Профиль | | #6
Добавлено: 20.10.03 15:47

To Malyav:

Чтобы алгоитм, описанный тобой в ответе 3 работал красиво, список должен быть отсортирован, и должна проводится проверка на "ПОСЛЕДНЕЕ совпадение" чтобы не пришлось перебирать ВЕСЬ массив.

Уже давно доказано что это оптимальнее.
Что сработает быстрее в массиве из 1000 записей:
- например, 500 раз вызвать Len() и 501 раз проверить состояние флага типа Boolean (прекратить\непрекратить) и выйти
или
- все 1000 раз вызвать Len() ?

В любом случае Len() исполняется на много дольше чем If(...) Then

Ответить

Страница: 1 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам