Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Поиск...


Страницы:   1 2

programmer90 ©   (2008-09-09 18:05:00) 

Здравствуйте ещё раз. На самом деле задача не так проста, несмотря на то что в теме сообщения я указал лишь одно слово...поиск
Нужно разработать такой алгоритм поиска
Допустим у нас в стринг массиве имеется строка : Sorry, "argument" is not found.
Если мы запросим в поиске  : Sorry, "здесь_может_быть_что_угодно_без_пробелов_и_без_кавычек" is not found, то поиск должен обнаружить вышеуказанную строку.
Всего таких "argument"-ов может быть  2 штуки .
Благодарю-с.


Zeqfreed   (2008-09-10 20:21:00) [1]

> Медвежонок Пятачок ©   (10.09.08 08:46) [31]

Эскимо? Страус!


Johnmen   (2008-09-10 09:15:00) [2]


> programmer90   (09.09.08 23:49) [23]
> Теперь самое сложное) как искать текст  по файлу не использую
> мемо и.т.д?

Никак. Это невозможно.


Медвежонок Пятачок   (2008-09-10 08:46:00) [3]

Какое регулярное выражение из строки a1b2c3 вернет 123? Я как-то ни разу не видел, чтобы с помощью регулярок осуществляли фильтрацию.

123? Да элементарно.


Zeqfreed   (2008-09-10 07:28:00) [4]

> programmer90   (09.09.08 23:37) [20]

Ага. Т.е. здесь_может_быть_что_угодно_без_пробелов_и_без_кавычек это новый способ наименования звездочки, понятно. Прокачал себе уровень телепатии.


programmer90   (2008-09-10 00:11:00) [5]

Да и  огромное спасибо всем, особенно Юрию Зотову©  , уже тута [9]  вы попали в яблочко.


programmer90   (2008-09-10 00:09:00) [6]


> Искать непосредственно в файле что мешает? Или хочется разбитие
> по строкам? Тогда TStrings

В принципе абсолютно ничего, просто немного заработался, завтра с утра я наверное буду смеятся над тем  как я мог такой вопрос задать))))


programmer90   (2008-09-10 00:06:00) [7]

Суть задачи такова:
Делаю оболочку для компилятора FP, которая будет польностью на трех языках будет!!!
Уже достаточно много сделано, часть сделана с помощью Delphimasters и спасибо вам за это!
Так на текущий момент задача такова:
Надо перевести ошибки компилятора.
Но некоторые ошибки представлен в обобщенном виде напр:
Fatal: Syntax error, "arg1" expected but "arg2" found  - где arg1, arg2 могут принимать различные значения.
поэтому нужен поиск по маске , вот в принципе и всё.


KilkennyCat   (2008-09-09 23:57:00) [8]


> programmer90   (09.09.08 23:49) [23]
>
> Теперь самое сложное)
> как искать текст  по файлу не использую мемо и.т.д?
> Просто файл большой...


Искать непосредственно в файле что мешает? Или хочется разбитие по строкам? Тогда TStrings


Юрий Зотов   (2008-09-09 23:57:00) [9]

> programmer90   (09.09.08 23:49) [23]

10 тыс. слов - это не большой файл. Даже если среднее слово состоит из 10 символов (а скорее всего, оно будет короче), то это всего лишь 100 кБ. Вполне можно целиком загрузить в память, тогда работать с ним будет намного проще и быстрее. Для этого подойдут, например, TStringList или TStringStream.


Юрий Зотов   (2008-09-09 23:52:00) [10]

> programmer90   (09.09.08 23:41) [21]

> маска может быть где угодно

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

Любая Ваша строка имеет такую структуру:
константа"параметр"константа"параметр"константа "параметр"...
где константа и параметр  - произвольные подстроки.

Нам нужно получить такую маску:
константа"*"константа"*"константа "*"...

То есть, каждую подстроку в кавычках (параметр) надо заменить на символ *. Это легко делается через PosEx и Copy.

========================

Вообще, надо бы подробнее знать суть задачи. А то пока не очень понятно, что это за поиск такой. Может быть, все можно решить проще.


programmer90   (2008-09-09 23:49:00) [11]

Теперь самое сложное)
как искать текст  по файлу не использую мемо и.т.д?
Просто файл большой...


Юрий Зотов   (2008-09-09 23:41:00) [12]

> programmer90   (09.09.08 23:37) [20]

Маска
Fatal: Syntax error, "*" expected but "*" found
удовлетворяет любому из этих трех запросов. Будет найдена строка {1}.


programmer90   (2008-09-09 23:41:00) [13]


> Так зачем же задавать неправильную маску? Ясно, что тогда
> и работать будет тоже неправильно.


К сожалению я даже не буду знать на какой позиции будет находится , маска может быть где угодно ....в файле размером до 5-10 тысяч слов


programmer90   (2008-09-09 23:37:00) [14]


> Я всегда очень удивляюсь и не верю, что можно сознательно
> написать настолько непонятно :)

Вот  допустим дана строка в каком-то файле:
Fatal: Syntax error, "arg1" expected but "arg2" found {1}

У нас поступает запрос найти :
Fatal: Syntax error, "identifier" expected but "Begin" found {2}
Поиск  среди тысяч строк должен найти и запомнить номер строки  {1}
У нас поступает запрос найти :
Fatal: Syntax error, ":" expected but ";" found {3}
Он опять таки должен запомнить номер строки  {1}
Опять таки он никак не угомониться поступает запрос найти
Fatal: Syntax error, ";" expected but "end of file" found
И как вы думаете на какую строку он должен указать?


Юрий Зотов   (2008-09-09 23:36:00) [15]

> programmer90   (09.09.08 23:23) [16]

Так зачем же задавать неправильную маску? Ясно, что тогда и работать будет тоже неправильно.


KilkennyCat   (2008-09-09 23:30:00) [16]

Странно... но я мне бы хватило Pos и проверки где.


Johnmen   (2008-09-09 23:23:00) [17]

Всё, что игнорируется, заменяется на *


programmer90   (2008-09-09 23:23:00) [18]


> [9]

проверил  вроде всё хорошо, единственное он пробелы не контролирует, то есть слов может быть больше... это не очень хорошо
если ему дать  'Sorry, arg is not found'   и 'Sorry, arg *'    он скажет что верно, а это не совсем удовлетворяет условию...


Zeqfreed   (2008-09-09 23:08:00) [19]

> programmer90   (09.09.08 22:54) [13]

Я всегда очень удивляюсь и не верю, что можно сознательно написать настолько непонятно :)


Zeqfreed   (2008-09-09 23:06:00) [20]

> Медвежонок Пятачок ©   (09.09.08 22:24) [12]

Какое регулярное выражение из строки a1b2c3 вернет 123? Я как-то ни разу не видел, чтобы с помощью регулярок осуществляли фильтрацию.


Страницы:   1 2

Наверх

Титульная страница Поиск, карта сайта Написать письмо