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

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

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

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

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

Ответ
 
Опции темы Поиск в этой теме
Старый 16.01.2013, 22:01   #1
lezgin
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 19
По умолчанию вытащить текст из тегов

добрый день всем. Вот у меня исходный код главной страницы 2ip.ru. Он лежит в memo1. Мне нужно оттуда вытянуть местоположение в memo2. Как это сделать?
lezgin вне форума Ответить с цитированием
Старый 16.01.2013, 22:39   #2
Вадим Мошев

Старожил
 
Аватар для Вадим Мошев
 
Регистрация: 12.11.2010
Сообщений: 8,568
По умолчанию

Регулярные выражения. Вы с ними знакомы?
Вадим Мошев вне форума Ответить с цитированием
Старый 16.01.2013, 23:11   #3
Человек_Борща
Старожил
 
Аватар для Человек_Борща
 
Регистрация: 30.12.2009
Сообщений: 11,426
По умолчанию

Вадим Мошев, жирновато для 15 байтов. Проще Copy, Pos, Delete применить.
Человек_Борща вне форума Ответить с цитированием
Старый 16.01.2013, 23:13   #4
BDA
МегаМодератор
СуперМодератор
 
Аватар для BDA
 
Регистрация: 09.11.2010
Сообщений: 7,291
По умолчанию

Код:
uses strutils;
...
function extract(const text, begin1, end1: string): string;
var
  startpos, endpos: integer;
begin
  result := '';
  startpos := Pos(begin1, text);
  if startpos < 1 then
    exit;
  inc(startpos, length(begin1));
  endpos := PosEx(end1, text, startpos);
  if endpos < 1 then
    exit;
  result := Copy(text, startpos, endpos - startpos);
end;
...
extract(memo1.text, 'href="/geoip/">', '</a>');
Пишите язык программирования - это форум программистов, а не экстрасенсов. (<= это подпись )
BDA вне форума Ответить с цитированием
Старый 17.01.2013, 07:49   #5
lezgin
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 19
По умолчанию

не помогает(((
У меня есть такой код, который делает запрос на myip.ru и получает оттуда ip. Вы можете как нибудь его настроить, чтобы он делал запрос на 2ip.ru и вытянул оттуда местоположение?
Вот код:
var
site: string;
n1,n2: integer;
begin
site:=IdHTTP1.Get('http://www.myip.ru/get_ip.php?loc=');
n1:=pos('<TD bgcolor=white align=center valign=middle>',site);
n2:=pos('</TABLE></TD></TR>',site);
Edit1.text:=copy(site,n1+45,n2-n1-56);
lezgin вне форума Ответить с цитированием
Старый 17.01.2013, 08:20   #6
Slym
Участник клуба
 
Регистрация: 07.12.2011
Сообщений: 1,025
По умолчанию

Код:
uses strutils;

function extract(const text, begin1, end1: string): string;
var
  startpos, endpos: integer;
begin
  result := '';
  startpos := Pos(begin1, text);
  if startpos < 1 then
    exit;
  inc(startpos, length(begin1));
  endpos := PosEx(end1, text, startpos);
  if endpos < 1 then
    exit;
  result := Copy(text, startpos, endpos - startpos);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  site: string;
begin
  site:=IdHTTP1.Get('http://www.myip.ru/get_ip.php');
  Edit1.text:=extract(LowerCase(site), '<td bgcolor=white align=center valign=middle>','</td>');
end;
Не стесняемся, плюсуем!
Slym вне форума Ответить с цитированием
Старый 17.01.2013, 18:58   #7
lezgin
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Slym Посмотреть сообщение
Код:
uses strutils;

function extract(const text, begin1, end1: string): string;
var
  startpos, endpos: integer;
begin
  result := '';
  startpos := Pos(begin1, text);
  if startpos < 1 then
    exit;
  inc(startpos, length(begin1));
  endpos := PosEx(end1, text, startpos);
  if endpos < 1 then
    exit;
  result := Copy(text, startpos, endpos - startpos);
end;

procedure TForm1.Button1Click(Sender: TObject);
var
  site: string;
begin
  site:=IdHTTP1.Get('http://www.myip.ru/get_ip.php');
  Edit1.text:=extract(LowerCase(site), '<td bgcolor=white align=center valign=middle>','</td>');
end;
все работает.
только у меня так выходит((((
Посмотреть точное место на карте" href="/geoip/"/?phpsessid=4uo3gl5u9htnkdg1qd77vggi 66>russian federation, Махачкала

Что сделать?
lezgin вне форума Ответить с цитированием
Старый 17.01.2013, 19:26   #8
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Цитата:
Сообщение от lezgin Посмотреть сообщение
все работает.
только у меня так выходит((((
Посмотреть точное место на карте" href="/geoip/"/?phpsessid=4uo3gl5u9htnkdg1qd77vggi 66>russian federation, Махачкала

Что сделать?
Это формат UTF, перекодируйте строчку, которую получаете, этой функцией:
Код:
function Utf8Decode(const S: UTF8String): WideString;
Lardes вне форума Ответить с цитированием
Старый 18.01.2013, 07:32   #9
lezgin
Пользователь
 
Регистрация: 23.01.2012
Сообщений: 19
По умолчанию

Цитата:
Сообщение от Lardes Посмотреть сообщение
Это формат UTF, перекодируйте строчку, которую получаете, этой функцией:
Код:
function Utf8Decode(const S: UTF8String): WideString;
куда прописать этот код?
lezgin вне форума Ответить с цитированием
Старый 18.01.2013, 10:18   #10
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Код:
var
  site: string;
begin
  site:=Utf8Decode(IdHTTP1.Get('http://www.myip.ru/get_ip.php'));
  Edit1.text:=extract(LowerCase(site), '<td bgcolor=white align=center valign=middle>','</td>');
Lardes вне форума Ответить с цитированием
Ответ


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
вытащить текст с веб страницы patch JavaScript, Ajax 4 01.10.2012 12:19
вытащить текст из ячейки Tirendus Microsoft Office Excel 18 29.01.2012 19:51
как вытащить текст с Memo между определённых тегов duhduhduh Общие вопросы Delphi 3 28.06.2010 17:19
Как получить текст HTML Документа из TWebBrowser без тегов Marsel737 Общие вопросы Delphi 10 28.11.2009 08:47
как качнуть из тегов текст в memo Лёка Работа с сетью в Delphi 4 03.02.2008 19:46