|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
|
Опции темы | Поиск в этой теме |
08.08.2007, 17:58 | #1 |
Пользователь
Регистрация: 08.08.2007
Сообщений: 15
|
Работа через POST с html (помощь)
Погмогите разобратся
вот код: =================================== ====================== unit Unit1; interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection, IdTCPClient, IdHTTP; type TForm1 = class(TForm) Button1: TButton; Memo1: TMemo; IdHTTP1: TIdHTTP; procedure Button1Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form1: TForm1; implementation {$R *.dfm} procedure TForm1.Button1Click(Sender: TObject); var LoginInfo: TStrings; Response: TStringStream; begin LoginInfo := TStringList.Create; Response := TStringStream.Create(''); LoginInfo.Clear; LoginInfo.Add('login=MyLogin'); LoginInfo.Add('password=MyPassword' ); IdHTTP1.Host:='avans.site.ru'; IdHTTP1.Port:=80; IdHTTP1.Post('/billing/check.php',LoginInfo,Response); Memo1.Clear; Memo1.Lines.Add(Response.DataString ); Response.Free; LoginInfo.Free; end; end. =================================== ====================== результатом работы в Memo: ======================= <?xml version="1.0" encoding="utf-8" ?> <billing xmlns="http://avans.site.ru/billing/"> <name>MyName</name> <lastUpdate iso="2007-08-08T17:50:03">08.08.2007 17:50:03</lastUpdate> <nextUpdate iso="2007-08-08T17:55:03">08.08.2007 17:55:03</nextUpdate> <money>2.00</money> <moneyToday at="2007-08-08">14.28</moneyToday> <!-- Generated in 0 seconds for MyIp --> </billing> ======================== Вот вопрос как получить значение между <money>значение</money>? |
08.08.2007, 18:04 | #2 |
Старожил
Регистрация: 13.12.2006
Сообщений: 3,859
|
strt:=memo1.text;
strt:=copy(strt,pos('<money',strt)+ 8,length(strt)-(pos('<money',strt)+7); strt:=copy(strt,1,pos('</',strt)-1);
ICQ не для вопросов, а для предложений. Для вопросов используйте форум
IRC канал клуба программистов|Мои статьи |
08.08.2007, 18:38 | #3 |
Пользователь
Регистрация: 08.08.2007
Сообщений: 15
|
спасибо большое Квэнди
=================================== ==================== var strt: string; begin strt:=memo1.text; strt:=copy(strt,pos('<money',strt)+ 7,length(strt)-(pos('<money',strt)+7)); strt:=copy(strt,1,pos('</',strt)-1); memo1.Clear; memo1.Text:=strt; end; =================================== ==================== Помогло =) |
08.08.2007, 23:49 | #4 |
Пользователь
Регистрация: 08.08.2007
Сообщений: 15
|
Квэнди еще вопросик =)
Как с помощью: =================================== =================== strt:=copy(strt,pos('<money',strt)+ 7,length(strt)-(pos('<money',strt)+7)); strt:=copy(strt,1,pos('</',strt)-1); =================================== =================== устроить цикл? т.е. у меня в memo находиться =================================== =================== текст <money>2.7</money> <money>3.1</money> тескт текст <money>4.5</money> очень много повтроряющихся стрк.. =================================== =================== и как сделать чтоб он проверил все строки на наличие <money>значение</money> и вывел все значения Если использовать =================================== ================== i:=0 while i<200 do strt:=memo1.lines.Strings[i]; strt:=copy(strt,pos('<money',strt)+ 7,length(strt)-(pos('<money',strt)+7)); strt:=copy(strt,1,pos('</',strt)-1); memo1.Lines.Add(strt); i:=i+1; =================================== ================== то получается чушь - во-первых задавать руками i:integer как-то неправильно и строка мемо может содержать тока кусок кода, который продолжается на втрой строке и в результате бред .. Последний раз редактировалось key'; 09.08.2007 в 00:21. |
14.08.2007, 14:52 | #5 | |
Форумчанин
Регистрация: 20.06.2007
Сообщений: 270
|
Цитата:
-Кукушка, кукушка! Накукуй мне сто лет!
-А накукуй тебе столько? (с) Библия. Вольный перевод с древнееврейского. |
|
16.08.2007, 15:03 | #6 |
Новичок
Джуниор
Регистрация: 16.08.2007
Сообщений: 2
|
Для таких задач лучше всего использовать RegExp.. www.regexpstudio.com
function ExtractMoney(HTML: string; var Money: string): Boolean; var R: TRegExpr; begin Result:= False; if Trim(HTML) <> '' then begin R:= TRegExpr.Create; R.ModifierM:= False; R.ModifierG:= False; R.ModifierS:= False; R.ModifierI:= False; R.ModifierX:= False; R.ModifierR:= False; try R.Expression:= '<money>(\d+\.\d+)</money>'; if R.Exec(HTML) then begin Result:= True; repeat Money:= Money + R.Match[1] + #13#10; until not R.ExecNext; end; finally R.Free; end; end; end; Результатом функции будет список нужных Вам значений, разделенными знаком перевода каретки aka #13 |
Опции темы | Поиск в этой теме |
Похожие темы | ||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
работа через прокси | BESS | Работа с сетью в Delphi | 18 | 28.09.2008 21:45 |
работа с БД (компонент ADO,dbGrid) через dll | oWish | Помощь студентам | 4 | 29.02.2008 12:23 |
Работа с текстовыйми файлами (plain + html) | imposer | Фриланс | 5 | 15.01.2008 14:34 |
Как передать POST data через запрос в веб-приложение | Anticrim | Java для Web (EE, Servlet, JSP, Tomcat, Spring MVC) | 3 | 03.10.2007 18:19 |
Нужна помощь по HTML-DK | DKbelRoma | HTML и CSS | 10 | 09.09.2007 12:09 |