Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Работа с сетью в Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 18.12.2010, 11:54   #1
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию Распарсить строку

получаю страницу так
Код:
IdHTTP1.get(FURL);
но на ней находится ифа которую не пойму как распарсить на три значения
PHP код:
<form action="" method="post"
3+
<
input type="text" name="captcha2" style="width: 50px;" value=""
даже не знаю за что тут заципится что бы получить a:=3, b:=+, c:=4
bulldog5293 вне форума Ответить с цитированием
Старый 18.12.2010, 12:29   #2
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

На делфи давно не писал, но примерно так:
Код:
	delete(s, pos('captcha2',s), length(s)-pos('captcha2',s)+1);
	for i:=length(s) downto 1 do
		if (s[i]='>') then
				break;
	delete(s, 1, i);
	delete(s, pos('<',s), length(s)-pos('<',s)+1);
	s:=StringReplace(s, #10, '', [rfReplaceAll, rfIgnoreCase]);
	s:=StringReplace(s, ' ', '', [rfReplaceAll, rfIgnoreCase]);
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 18.12.2010, 13:00   #3
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

спс, работает, но мне нада что бы a:=3, b:=+, c:=4, что бы дальше использовать функции сложения, просто вместо + может и -,*,/ быть

Последний раз редактировалось bulldog5293; 18.12.2010 в 13:08.
bulldog5293 вне форума Ответить с цитированием
Старый 18.12.2010, 13:20   #4
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Код:
var
	a,b,s:string;
	i:integer;
	c:char;
	step:byte;
begin
	s:='5533/3354=';
	step:=0;
	a:='';
	b:='';
	for i:=1 to length(s) do
	begin
		if step=0 then
			if s[i] in ['0'..'9'] then
			a:=a+s[i] else
			step:=1;
		if step=2 then
			if s[i] in ['0'..'9'] then
			b:=b+s[i] else
			break;
		if step=1 then
		begin
			c := s[i];
			step:=2;
		end;
	end;
//StrToInt(a), StrToInt(b), c
end.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 18.12.2010, 16:59   #5
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

так у меня только s и показывается
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
	a,b,s:string;
	i:integer;
	c:char;
	step:byte;
begin
s:=IdHTTP1.get(FURL);
delete(s, pos('captcha2',s), length(s)-pos('captcha2',s)+1);
	for i:=length(s) downto 1 do
		if (s[i]='>') then
				break;
	delete(s, 1, i);
	delete(s, pos('<',s), length(s)-pos('<',s)+1);
	s:=StringReplace(s, #10, '', [rfReplaceAll, rfIgnoreCase]);
  step:=0;
	a:='';
	b:='';
	for i:=1 to length(s) do
	begin
		if step=0 then
			if s[i] in ['0'..'9'] then
			a:=a+s[i] else
			step:=1;
		if step=2 then
			if s[i] in ['0'..'9'] then
			b:=b+s[i] else
			break;
		if step=1 then
		begin
			c := s[i];
			step:=2;
      showmessage(s);
		end;
	end;
end;

Последний раз редактировалось bulldog5293; 18.12.2010 в 17:19.
bulldog5293 вне форума Ответить с цитированием
Старый 18.12.2010, 17:12   #6
russian-stalker
Участник клубаДжуниор
 
Аватар для russian-stalker
 
Регистрация: 23.08.2008
Сообщений: 1,616
По умолчанию

Опустите Showmessage на два end'а ниже.
pushl $0x18E3DF6B
call ICQ
russian-stalker вне форума Ответить с цитированием
Старый 18.12.2010, 17:39   #7
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

не, ты меня не понял
Код:
procedure TForm1.Button1Click(Sender: TObject);
var
	a,b,s:string;
	i:integer;
	c:char;
	step:byte;
begin
s:=IdHTTP1.get('FURL');
delete(s, pos('captcha2',s), length(s)-pos('captcha2',s)+1);
	for i:=length(s) downto 1 do
		if (s[i]='>') then
				break;
	delete(s, 1, i);
	delete(s, pos('<',s), length(s)-pos('<',s)+1);
	s:=StringReplace(s, ' ', '', [rfReplaceAll, rfIgnoreCase]);
  step:=2;
	for i:=2 to length(s) do
		begin
			a := s[i];
			step:=2;
			showmessage(a);
edit1.text:= s[i];
		end;
	end;
так у меня выводится цифра, знак, цифра, равно, пробел. А как сделать без пробела

Последний раз редактировалось bulldog5293; 19.12.2010 в 14:45.
bulldog5293 вне форума Ответить с цитированием
Старый 18.12.2010, 19:25   #8
bulldog5293
Форумчанин
 
Регистрация: 13.05.2010
Сообщений: 670
По умолчанию

Вопрос снят, проблему решил
bulldog5293 вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Как распарсить страницу DeDoK Общие вопросы Delphi 2 30.11.2009 22:30
Распарсить прайс Sanyo Microsoft Office Excel 7 13.11.2009 17:01
Как лучше распарсить строку? Molotoff Общие вопросы C/C++ 8 18.06.2009 18:37
Помогите распарсить строку Alexander1991 Помощь студентам 1 08.03.2009 22:33
Распарсить HTML Табурет Общие вопросы C/C++ 11 02.03.2008 19:26