|
|
Регистрация Восстановить пароль |
Повторная активизация e-mail |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
|
Опции темы | Поиск в этой теме |
13.06.2009, 11:28 | #1 |
Регистрация: 13.06.2009
Сообщений: 5
|
Помогите вытянуть нужный текст из memo
Здраствуйте все !
У меня такая проблемка : в memo1 лежит код html странички , полученый из TWebBrowser . В этом коде регулярно повторяются промежутки типа : Код HTML:
<tr> <td align='center'>ХХХХХ</td> <td align=center><a href='index2.php?cf=akk-plus2&mid=ХХХХХ'>текст произвольной длинны</a></td> <td align=center>Х.ХХХ</td> <td align=center>ХХ.ХХ.ХХХХ</td> <td align=center><a href='index2.php?cf=akk-delete2&sid=ХХХХХХХХ' onclick='if (!confirm("Вы уверены?"))return false;'><img src='/i/delete.gif' alt='Удалить' width='15' height='15' border='0'></td> </tr> Последний раз редактировалось Stilet; 15.06.2009 в 08:56. |
13.06.2009, 11:40 | #2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
Можно и просто функциями:
1. Ищет в Мемо от указанного смещения фрагмент строки <tr 2. Отсчитывает от указанного смещения нужное количество строк и извлекает из строки название ссылки 3. Отсчитывает от указанного смещения нужное количество строк и извлекает из строки ссылку Что-то в этом роде.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
13.06.2009, 11:48 | #3 |
Регистрация: 13.06.2009
Сообщений: 5
|
хорошо , но как это реализовать на практике ?
1. Ищет в Мемо от указанного смещения фрагмент строки <tr но ведь в файле не только нужные мне строки начинаются на <tr ! 2. Отсчитывает от указанного смещения нужное количество строк и извлекает из строки название ссылки опять же , допустим мы нашли какой-то левый тр , тогда все закончится дефолтом . Да и извлечь адрес ссылки немного проблематично , как по мне ... ладно , попробую организовать что-то подобное ... но все-же , проблема с поиском и доставанием нужного остается открытой ... |
13.06.2009, 11:54 | #4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
1. После <tr пусть ищет <td align='center'> в следующей строке, а в следующей строке <td align=center>. Мало? Пусть дальше заглянет.
Это не проблема, у тебя все упирается только в смещение в Memo.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика |
13.06.2009, 12:30 | #5 | ||
Форумчанин
Регистрация: 12.05.2007
Сообщений: 373
|
XazzzI, почитай про функцыи Pos, PosEx и Copy.. с их помощью ты можешь реализовать парсер любой сложности..
Цитата:
или второй вариант: Цитата:
если "левый" блок меньше "нужного" - то нужно делать дорполнительно проверку на окончание блока.. удачи
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен: "Перемен!Мы ждем перемен!" |
||
13.06.2009, 18:00 | #6 |
Форумчанин
Регистрация: 16.08.2008
Сообщений: 276
|
Я бы посоветовал так:
Так как в делфи строки длиной до 2Гб советую все, что между тегами <tr> и </tr> запихнуть в одну строку (так не нужно будет мучаться с переходами на новую строку в memo) Далее при помощи pos("</a>",s) ищем конец ссылки. Смещаемся в лево по строке, пока не встретим ">" при помощи copy(s,позиция символа >,pos("</a>",s)-позиция символа+1) находим текст ссылки. Далее все просто: с pos("</a>",s)+3 ищем открывающий тег > и идем до закрвыающего </td>. Вот вам и X.XXX
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
14.06.2009, 03:08 | #7 | |
Пользователь
Регистрация: 04.06.2009
Сообщений: 26
|
можно попробовать использовать
Код:
Цитата:
|
|
14.06.2009, 13:17 | #8 |
Регистрация: 13.06.2009
Сообщений: 5
|
Всем спасибо
Сделал все гораздо проще . Строка с сылкой всегда начинается на <td><a href='index2.php...' , я это ищю функцией pos , если возвращает 0 - строку удаляю , иначе обрезаю и восстанавливаю предыдущюю строку в которой число X.XXX . Еще один вопрос : есть ли в дельфи функция аналогичная unescape в javascript ? Нужно раскодировать строку типа eval(unescape('%12%05....'));. Собственно , вся проблема в раскодировке этого с процентами . Если знаете , плз , напишите !
|
14.06.2009, 16:52 | #9 |
Форумчанин
Регистрация: 12.05.2007
Сообщений: 373
|
эээммм... преобразуй строку в массив чычсел.. а потом функцыей CHR из числа в символ.. либо преобразуй строку в массив байт.. и потом функцыей SetString из байтов в строку..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен: "Перемен!Мы ждем перемен!" |
15.06.2009, 07:47 | #10 |
Пользователь Подтвердите свой е-майл
Регистрация: 03.01.2008
Сообщений: 49
|
|
|
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
текст из файла в Memo | malkolm | Общие вопросы Delphi | 6 | 12.01.2009 17:02 |
напечатать текст из Memo | Sanek777 | Общие вопросы Delphi | 1 | 30.08.2008 21:25 |
(Memo) на текст | D-mon | БД в Delphi | 4 | 06.06.2008 11:22 |
считать текст из memo - посимвольно | prizrak1390 | Помощь студентам | 10 | 13.12.2007 21:42 |
В Memo сделать так, чтобы текст был разного цвета, разноцветный memo | Artem | Компоненты Delphi | 3 | 07.09.2007 13:40 |