![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Регистрация: 13.06.2009
Сообщений: 5
|
![]()
Здраствуйте все !
У меня такая проблемка : в 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. |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
Можно и просто функциями:
1. Ищет в Мемо от указанного смещения фрагмент строки <tr 2. Отсчитывает от указанного смещения нужное количество строк и извлекает из строки название ссылки 3. Отсчитывает от указанного смещения нужное количество строк и извлекает из строки ссылку Что-то в этом роде.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#3 |
Регистрация: 13.06.2009
Сообщений: 5
|
![]()
хорошо , но как это реализовать на практике ?
1. Ищет в Мемо от указанного смещения фрагмент строки <tr но ведь в файле не только нужные мне строки начинаются на <tr ! 2. Отсчитывает от указанного смещения нужное количество строк и извлекает из строки название ссылки опять же , допустим мы нашли какой-то левый тр , тогда все закончится дефолтом . Да и извлечь адрес ссылки немного проблематично , как по мне ... ладно , попробую организовать что-то подобное ... но все-же , проблема с поиском и доставанием нужного остается открытой ... |
![]() |
![]() |
![]() |
#4 |
Старожил
Регистрация: 04.02.2009
Сообщений: 17,351
|
![]()
1. После <tr пусть ищет <td align='center'> в следующей строке, а в следующей строке <td align=center>. Мало? Пусть дальше заглянет.
Это не проблема, у тебя все упирается только в смещение в Memo.
Маньяк-самоучка
Utkin появился в результате деления на нуль. Осторожно! Альтернативная логика ![]() |
![]() |
![]() |
![]() |
#5 | ||
Форумчанин
Регистрация: 12.05.2007
Сообщений: 373
|
![]()
XazzzI, почитай про функцыи Pos, PosEx и Copy.. с их помощью ты можешь реализовать парсер любой сложности..
Цитата:
или второй вариант: Цитата:
если "левый" блок меньше "нужного" - то нужно делать дорполнительно проверку на окончание блока.. удачи
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен: "Перемен!Мы ждем перемен!" |
||
![]() |
![]() |
![]() |
#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
Искусственный интеллект - фигня по сравнению с естественной глупостью
|
![]() |
![]() |
![]() |
#7 | |
Пользователь
Регистрация: 04.06.2009
Сообщений: 26
|
![]()
можно попробовать использовать
Код:
Цитата:
|
|
![]() |
![]() |
![]() |
#8 |
Регистрация: 13.06.2009
Сообщений: 5
|
![]()
Сделал все гораздо проще . Строка с сылкой всегда начинается на <td><a href='index2.php...' , я это ищю функцией pos , если возвращает 0 - строку удаляю , иначе обрезаю и восстанавливаю предыдущюю строку в которой число X.XXX . Еще один вопрос : есть ли в дельфи функция аналогичная unescape в javascript ? Нужно раскодировать строку типа eval(unescape('%12%05....'));. Собственно , вся проблема в раскодировке этого с процентами . Если знаете , плз , напишите !
|
![]() |
![]() |
![]() |
#9 |
Форумчанин
Регистрация: 12.05.2007
Сообщений: 373
|
![]()
эээммм... преобразуй строку в массив чычсел.. а потом функцыей CHR из числа в символ.. либо преобразуй строку в массив байт.. и потом функцыей SetString из байтов в строку..
Перемен! - требуют наши сердца. Перемен! - требуют наши глаза.
В нашем смехе и в наших слезах, И в пульсации вен: "Перемен!Мы ждем перемен!" |
![]() |
![]() |
![]() |
#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 |