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

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

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 02.10.2009, 10:40   #31
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Function TStringList.SubSearch(SubS:ShortStr ing):Integer;
SubS - Подстрока, которую ищем.
Result - Номер строки, где она находится.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.10.2009, 11:48   #32
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,229
По умолчанию

Цитата:
Function TStringList.SubSearch(SubS:ShortStr ing):Integer;
погодите... TStringList - это многострочный текст.
Вы хотите найти подстроку в тексте (по всем строчкам). (я уже молчу о том, что Вы собираетесь найти только первое вхождение? а продолжить поиск как?!)

Ну, тогда два вопроса - а зачем тогда нужен TStringList ?
и что Вам даст то, что записи отсортированы?!
Берите просто ОДНУ БОЛЬШУЮ строку и ищите в ней...
или я чего-то не понимаю?! ;(
Serge_Bliznykov вне форума Ответить с цитированием
Старый 02.10.2009, 16:10   #33
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
или я чего-то не понимаю?!
Именно.
Объясню с самого начала:
G.txt - база словаря, содержащая глаголы:
Цитата:
...
СТОИТЬ СТОИЛ СТОИЛА СТОИЛО СТОИЛИ СТОЮ СТОИТ СТОЯТ
РЕЗАТЬ РЕЗАЛ РЕЗАЛА РЕЗАЛО РЕЗАЛИ РЕЖУ РЕЖЕТ РЕЖУТ
...
Глаголы, как вы поняли стоят в определенном порядке. (Инф, я пр,он пр, она пр, оно пр, они пр, я наст, он наст, они наст.)
По аналогии другие базы.
В соответствии с указанием Utkin`а буду разбивать по буквам. (30 файлов каждый на одну букву).

Как это работает:

Я ввожу фразу, разбиваю её на слова, делаю все КейсАп (Эта часть уже завершена), дальше мне нужно узнать тип каждого слова (алгоритм уже есть, но еще не набирал), и ПЕРЕВЕСТИ его в инфинитив (что делать? БегАТЬ, плевАТЬ, кусАТЬ). Для этого я ищу в базе слово, узнаю строку, в которой оно содержится и беру первое слово в этой строке. ТАКОЕ СЛОВО ТОЛЬКО ОДНО (продолжать поиск не нужно.)

Почему СтринГлист? Он быстрее всех грузит в себя файл, легко сортирует все по алфавиту, если необходимо "вписать" слово внутрь базы.

Function TStringList.SubSearch(SubS:ShortStr ing):Integer; - Эту функу я собираюсь "внедрить" в список процедур стринГлиста, так как могут возникнуть сложности при передачи имени самого стринГлиста в качестве параметров. Пока она еще не написана, но я работаю над этим.
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.10.2009, 16:20   #34
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Почему СтринГлист?
А я бы все записал в String (2GB хватит за глаза)
и функой POS нашел нужное, ну или собственную функу написал на ассемблеровских вставках, которая бы искала вне зависимости от регистра.

Просто классы штука удобная но не всегда быстрая.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2009, 16:29   #35
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Цитата:
функой POS нашел нужное
Ну хорошо, нашли мы слово, к примеру СТОИЛИ (см пример в посте 33). И дальше что? Как мы узнаем, сколько букв отсчитывать назад для получения слова в инфинитиве?
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Старый 02.10.2009, 17:17   #36
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Как мы узнаем, сколько букв отсчитывать назад для получения слова в инфинитиве?
До начала строки т.е. первого попавшегося #13 если идти назад

p.S. я лично всегда так поступаю - пока не жаловался на скорость.
I'm learning to live...
Stilet вне форума Ответить с цитированием
Старый 02.10.2009, 17:18   #37
Alex Cones
Trust no one.
Старожил
 
Аватар для Alex Cones
 
Регистрация: 07.04.2009
Сообщений: 6,526
По умолчанию

Аааа, Вы имеете ввиду грузить файл как одну стринг, а не избавлятся от #10#13!!! Ясно!
Вот только непонятно, как грузануть в стринг сразу весь файл...
SQUARY PROJECT - НАБОР БЕСПЛАТНЫХ ПРОГРАММ ДЛЯ РАБОЧЕГО СТОЛА.
МОЙ БЛОГ
GRAY FUR FRAMEWORK - УДОБНАЯ И БЫСТРАЯ РАЗРАБОТКА WINAPI ПРИЛОЖЕНИЙ
Alex Cones вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Вывод текстовой информации из документа TXT. soonner PHP 2 09.05.2009 21:57
Как удалить текст до слова, потом от слова ? littlecoder Общие вопросы Delphi 7 29.12.2008 00:57
найти оптимальный план производства Baxxter Microsoft Office Excel 12 25.09.2008 23:45
Какой оптимальный способ в Delphi для перевода 10 системы счисления в 16с.с SERGOO Общие вопросы Delphi 5 25.05.2007 19:02