![]() |
Модераторы: Snowy, MetalFan, bems, Poseidon |
![]() ![]() ![]() |
|
Massaget |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.7.2015 Репутация: нет Всего: нет |
Приветствую всех!
В текущей функции парсируется только слово написанное прописным и полужирным шрифтом. А следующие слова с теми же атрибутами расположенными далее, просто игнорируются. Необходимо парсировать все слова имеющие одинаковые атрибуты форматирования и расположенные на одной строке разделённые через: пробел, дефис, кавычки (Word'овские и возможно такие - " "). Буду рад, если поможете отредактировать код!
Это сообщение отредактировал(а) Poseidon - 2.8.2015, 21:54 |
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
Код не полный. Что за функции и переменные (Ch_BraceSqrBegin, S_IsLetter, S_UpperChar) не ясно. Но чуется мне, что данную задачу можно решить через регулярные выражения. Дай пример что передается в AValue. Подозреваю что там HTML, но все же. Так же определи конкретно в каких случая функция должна возвращать True (лучше с примерами).
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Massaget |
|
||||||||||||||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.7.2015 Репутация: нет Всего: нет |
Poseidon, давайте объясню всё по порядку. Функция выдернута из приложения, в котором все компоненты кроме формы не являются стандартными VCL. Ни самих компонентов ни их исходных кодов у меня нет. Поэтому на некоторые ваши уточнения не могу ответить. Понимаю, чем больше Вам знать, тем быстрее мне получить ответ.
Ch_BraceSqrBegin - упоминается ещё и в процедуре ниже (прилагаю код).
S_IsLetter - упоминается только в обработчике снизу.
S_UpperChar - упоминается только в функции
Хотя бы можно просто проверить является ли следующее слово прописным. Если да, то нужно взять все прописные слова как один элемент. |
||||||||||||||
|
|||||||||||||||
Poseidon |
|
||||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
Не надо код, надо конкретная строка.
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
||||
|
|||||
Massaget |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.7.2015 Репутация: нет Всего: нет |
Задача и упоминание HTML в приложении начинается после анализа текста загруженного в визуальный компонент AnalystList. Так что анализ происходит после загрузки документа. А извлечение нужного текста выполняется именно функцией
|
|||
|
||||
Poseidon |
|
|||
![]() Delphi developer ![]() ![]() ![]() ![]() Профиль Группа: Комодератор Сообщений: 5273 Регистрация: 4.2.2005 Где: Гомель, Беларусь Репутация: 9 Всего: 133 |
Этой функцией выполняется не извлечение, а определение. В функцию передается какой-то текст (AValue), эта функция что-то определяет и возвращает либо True, либо False. Вот и возникло 2 вопроса, ответ на которые ускорит решение задачи:
-------------------- Если хочешь, что бы что-то работало - используй написанное, если хочешь что-то понять - пиши сам... |
|||
|
||||
Massaget |
|
||||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.7.2015 Репутация: нет Всего: нет |
Имеется следующий текст (изображение во вложении). В тексте прописные слова начинающиеся с нового абзаца (параграфа) являются нужным элементом. Нужных элементов до 8. Другие обрабатываются корректно. В общем если второе прописное слово начинается с символа не являющегося русским алфавитом, то AValue возвращает: 1) первое прописное слово в котором все символы русские, 2) часть первого прописного слова в котором все символы русские до первого "чужого" символа. (смешанное слово понимается до первого чужого символа), 3) два и более слов до первого встречного чужого символа. Сегодня накидал пару строк кода, который вроде как работает. Но нужно ещё потестить. Если в случае желаемого результата мне остаётся прикрутить его вместо AValue. Это возможно сделать? Это сообщение отредактировал(а) Massaget - 5.8.2015, 21:25 Присоединённый файл ( Кол-во скачиваний: 4 ) ![]() |
||||
|
|||||
Massaget |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.7.2015 Репутация: нет Всего: нет |
А вот и те символы - чужаки, из-за которых и весь сыр-бор.
Присоединённый файл ( Кол-во скачиваний: 6 ) ![]() |
|||
|
||||
Massaget |
|
|||
Новичок Профиль Группа: Участник Сообщений: 6 Регистрация: 30.7.2015 Репутация: нет Всего: нет |
Всем спасибо за участие! Вопрос снят!
Как говорится "На бога надейся, а сам не плошай!" |
|||
|
||||
![]() ![]() ![]() |
Правила форума "Delphi: Для новичков" | |
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Snowy, MetalFan, bems, Poseidon, Rrader. |
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
0 Пользователей: | |
« Предыдущая тема | Delphi: Для новичков | Следующая тема » |
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |