![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
Как же выдрать нужный кусочем html кода. [D7, WinXP]
Lamer6666 © (2009-11-11 22:53:00)Добрый вечер уважаемые.
Выполняю запрос методом GET получаю в текстовую переменную S HTML код.
Мне необходимо из всего HTML кода выдернуть табличку
<table class="callstable" cellpadding="2" cellspacing="0" width=500>
<tr>
<td style="border-bottom: 1px solid black; font-weight: bold;">Date</td><td style="border-bottom: 1px solid black; font-weight: bold;"> </td>
<td style="border-bottom: 1px solid black; font-weight: bold;">Time</td>
<td style="border-bottom: 1px solid black; font-weight: bold;"> </td>
<td style="text-align: left; border-bottom: 1px solid black; font-weight: bold;">Pole1</td>
<td style="border-bottom: 1px solid black; font-weight: bold;"> </td>
<td style="text-align: left; border-bottom: 1px solid black; font-weight: bold;">Pole2</td>
<td style="border-bottom: 1px solid black; font-weight: bold;"> </td>
<td style="text-align: left; border-bottom: 1px solid black; font-weight: bold;">Pole3</td>
<td style="border-bottom: 1px solid black; font-weight: bold;"> </td>
</tr>
Далее пошли строки <tr></tr> с данными.... для выше приведенных заголовков
</table>
и подкорректировать в ней данные....
Кто сталкивался? Как реализовать?
Спасибо и премного благодарен.
Медвежонок Пятачок (2009-11-14 02:21:00) [21]ну так найди все вхождения подстрок - сумм.
затем обработай.
Lamer6666 (2009-11-14 02:00:00) [22]S содержит результат GET запроса.
В S надо произвести арифметические операции над каждым числом вида [0-9]{1,}[.][0-9]{2}.
Вот мне и надо не просто РЕПЛЕЙСИТЬ все такие значения, а РЕПЛЕЙСИТЬ из умноженными на 0,5 например. Как мне сослаться на каждую сумму типа [0-9]{1,}[.][0-9]{2} для перевода ее в double?
Медвежонок Пятачок (2009-11-14 01:56:00) [23]Ну странный ты однако.
Ты что вообще реплейсишь?
По моему это переменная S.
Ты спрашиваешь как сослаться на переменную?
Lamer6666 (2009-11-14 01:45:00) [24]
> а что, проблема умножить найденную сумму (переведя ее сначала
> к double) на два и привести резалт обратно к строке для
> использования в реплейсе?
>
Это ясно, что переводить то? Как сослаться на эту сумму в коде:
r:=TRegExpr.Create;
try
r.Expression := ' [0-9]{1,}[.][0-9]{2}';
S:=r.Replace(S,'66.666',false);
finally
r.free;
end;
?
Медвежонок Пятачок (2009-11-14 01:03:00) [25]а что, проблема умножить найденную сумму (переведя ее сначала к double) на два и привести резалт обратно к строке для использования в реплейсе?
Lamer6666 (2009-11-13 21:41:00) [26]Реализовал:
r:=TRegExpr.Create;
try
r.Expression := ' [0-9]{1,}[.][0-9]{2}';
S:=r.Replace(S,'66.666',false);
finally
r.free;
end;
Но не понимаю как реализовать замену всех искомых сумм не на фиксированное значение '66.666', а на произведение например, то есть в место 0.001 получить везде 0.001*2?
Медвежонок Пятачок (2009-11-13 15:17:00) [27]либо вообще ничего не поменяет
ибо внутри мача вполне может не оказаться ничего, что бъет с выражением по которому найден сам этот мач.
Медвежонок Пятачок (2009-11-13 15:14:00) [28]либо он весь мач поменяет разом.
кроме того реплейс - это функция
Separator (2009-11-13 15:14:00) [29]Использовать отдельно, без Exec
Медвежонок Пятачок (2009-11-13 15:13:00) [30]Экспрешшен то перед реплэйсом поменять надо.
Lamer6666 (2009-11-13 09:03:00) [31]
> Там же есть функция Replace
Что то не могу понять как работает, Replace надо использовать отдельно от r.Exec? Или можно в цикле:
REPEAT
r.Match [0]
r.Replace(r.Match [0],'то на что меняем')
UNTIL not r.ExecNext;
??
Separator (2009-11-13 05:42:00) [32]Там же есть функция Replace
Lamer6666 (2009-11-13 00:54:00) [33]А вот этот вопрос не получилось решить....
Как в
REPEAT
r.Match [0]
UNTIL not r.ExecNext;
заменить найденную строку r.Match [0] на свой текст, может средствами TRegExpr это можно сделать?
Lamer6666 (2009-11-13 00:28:00) [34]Прошу прощения за лишнее беспокойство, наткнулся:
REPEAT
r.Match [0]
UNTIL not r.ExecNext;
Lamer6666 (2009-11-13 00:08:00) [35]
> Separator
Да действительно удобно, единственное не могу понять как к коде:
r := TRegExpr.Create;
try
r.Expression := 'ТУТ ВЫРОЖЕНИЕ';
if r.Exec (S) then S:=r.Match [0];
finally r.Free;
end;
перебрать все содержащиеся в тексте подстроки удовлетворяющие r.Expression, у меня r.Match [0]; содержит первое найденное?
r.Match [1] ничего не содержит.... ((
Dennis I. Komarov (2009-11-12 15:45:00) [36]
> и подкорректировать в ней данные....
с какой целью?
я к тому, что на сервере ничего не измениться...
Separator (2009-11-12 12:53:00) [37]Советую использовать регулярные выражения, работают достаточно быстро. Очень сильно облегчают такие задачи.
Качать с сайта http://www.regexpstudio.com/, но что-то он не работает, так что выкладываю у себя
http://sergey.vilgelm.info/projects/delphi/regexp
DVM (2009-11-12 00:28:00) [38]
> Мне необходимо из всего HTML кода выдернуть табличку
Pos() + Copy() - выдернуть можно все что угодно.