Форум программистов, компьютерный форум, киберфорум
Наши страницы
Delphi для начинающих
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
jeka-22
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 20
1

Спарсить предложение

03.08.2012, 09:08. Просмотров 828. Ответов 7
Метки нет (Все метки)

Имеется кусок кода:

<div id="text_history" class="fliess10px-white scrollbars"><p>2012-08-03 07:01:07<br />
Получен бонус за вход (с 5-го дня).<br />
<br />
2012-08-02 17:04:28<br />
Получен бонус за вход (с 5-го дня).<br />
<br />
2012-08-02 17:04:28<br />
Получен бонус за вход (с 5-го дня).<br />
<br />
2012-08-01 10:01:52<br />
Игрок ?CHAMPION? (MMO) уничтожил тебя.<br />
<br />
2012-08-01 10:01:52<br />
Игрок ?ололо? (MMO) уничтожил тебя.<br />
<br />
2012-08-01 10:01:52<br />
Корабль отремонтирован.<br />
</p></div>


Строки выделенные красным, нужно спарсить в переменную и поместить в мемо.
Регулярки - плохо, а как с помощью copy,pos не знаю. Помогите новичку.
Заранее спасибо
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
03.08.2012, 09:08
Ответы с готовыми решениями:

Спарсить текст
Добрый день, уважаемые форумчане. Не могу разобраться, как вытащить информацию...

как спарсить?
Как спарсить в ответе от сервера слово с символом '? '

Спарсить регуляркой
Помогите спарсить регуляркой слово sa-mp-442.png между тегом &lt;a&gt; &lt;/a&gt; &lt;a...

Как спарсить?
Всем привет) есть такой код на сайте &lt;option value=&quot;&quot;&gt;year&lt;/option&gt; ...

Как спарсить в цикле?
В общем, есть код страницы: &lt;div id=&quot;list_my-sites&quot; class=&quot;profile-bevel...

7
Alex_pac
1293 / 699 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
03.08.2012, 09:22 2
Delphi
1
2
3
4
5
6
7
8
procedure TForm1.Button1Click(Sender: TObject);
var p: TPregArray;
begin
  if preg.match_all(Edit1.Text,memo1.Text,p) then begin
    memo2.Text:=p[1].Text;
    p.free;
  end;
end;
http://jqbook.narod.ru/delphi/preg.htm
1
Миниатюры
Спарсить предложение  
Вложения
Тип файла: zip цуцуц.zip (280.0 Кб, 11 просмотров)
jeka-22
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 20
03.08.2012, 09:24  [ТС] 3
Цитата Сообщение от Alex_pac Посмотреть сообщение
procedure TForm1.Button1Click(Sender: TObject);
var p: TPregArray;
begin
* if preg.match_all(Edit1.Text,memo1.Text,p) then begin
* * memo2.Text:=p[1].Text;
* * p.free;
* end;
end;
Спасибо большое, но я регулярки вообще не знаю
Прокомментируйте пожалуйста код, постараюсь понять его
0
Puporev
Модератор
54994 / 42296 / 29207
Регистрация: 18.05.2008
Сообщений: 99,928
03.08.2012, 09:26 4
Пусть этот код хранится в текстовом файле. Тогда так. Понял что точка не входит в переменную.
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Button1Click(Sender: TObject);
var f:textfile;
    s:shortstring;
    a:array of shortstring;
    n:integer;
begin
if OpenDialog1.Execute then
assignfile(f,OpenDialog1.FileName);
reset(f);
n:=0;
while not eof(f) do
 begin
  readln(f,s);
  if copy(s,1,5)='Игрок' then
   begin
    n:=n+1;
    setlength(a,n);
    a[n-1]:=copy(s,1,pos('.',s));//сохраняем в переменную массив
    Memo1.Lines.Add(a[n-1]);//выводим в Мемо
   end;
 end;
end;
1
Alex_pac
1293 / 699 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
03.08.2012, 09:27 5
Цитата Сообщение от jeka-22 Посмотреть сообщение
регулярки вообще не знаю
самое время учить

можете начать не с Delphi а с php или JavaScript регулярок.
1
jeka-22
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 20
03.08.2012, 10:30  [ТС] 6
Alex_pac,
После запуска проекта в делфи, перестает работать

Checking project dependencies...
Compiling Project1.dproj (Debug configuration)
[DCC Warning] RegExpr.pas(2299): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
[DCC Warning] RegExpr.pas(3681): W1050 WideChar reduced to byte char in set expressions. Consider using 'CharInSet' function in 'SysUtils' unit.
[DCC Hint] RegExpr_preg.pas(63): H2077 Value assigned to 'Preg.match' never used
[DCC Hint] RegExpr_preg.pas(72): H2164 Variable 'r' is declared but never used in 'Preg.match_all'
Success
Elapsed time: 00:00:00.4

Добавлено через 49 минут
Получился такой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
procedure TForm1.Timer2Timer(Sender: TObject);
var vrag:string;
s,s1:string;
Http  : TidHttp;
Data  : TStringList;
var p: TPregArray;
begin
HTTP := TIdHTTP.Create(nil); // HTTP
HTTP.HandleRedirects := True;
application.ProcessMessages;
// Чтобы не выдавало ошибку 302, в Delphi 2010 не важно
HTTP.AllowCookies := True;
HTTP.request.useragent :='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
HTTP.CookieManager := IdCookieManager1;
Http := TIdHTTP.Create(Self);
application.ProcessMessages;
S:=idhttp1.get('http://'+sedit2.Text+'.darkorbit.bigpoint.com/indexInternal.es?action=internalStart&dosid='+sedit1.Text); // авторизация
application.ProcessMessages;
if preg.match_all('/(игрок.+?)<br/i',s,p) then begin
smemo1.lines.add (p[1].Text); // в мемо ничего не появляется
p.free;
end;
0
Alex_pac
1293 / 699 / 107
Регистрация: 25.05.2011
Сообщений: 2,158
Записей в блоге: 51
03.08.2012, 11:20 7
Как использовать Unicode

TRegExpr теперь поддерживает работу с UniCode.

Обратите внимание, что этот режим практически неоптимизирован и работает чрезвычайно медленно (по сравнению со стандартным режимом).
Используйте его только если Вам действительно не обойтись без UniCode (а лучше примите участие в разработке TRegExpr и оптимизируйте UniCode-режим).

Чтобы переключить TRegExpr на работу с unicode уберите '.' из {.$DEFINE UniCode} в файле regexpr.pas.
Все строки после этого будут восприниматься как WideString.
http://regexpstudio.com/RU/TRegExpr/...nicode_support

так что лучше приводи кодировку в ANSI функцией UTF8toANSI()

и только потом отправляй на обработку регулярку
0
jeka-22
0 / 0 / 0
Регистрация: 29.10.2011
Сообщений: 20
03.08.2012, 11:36  [ТС] 8
Цитата Сообщение от Alex_pac Посмотреть сообщение
так что лучше приводи кодировку в ANSI функцией UTF8toANSI()
и только потом отправляй на обработку регулярку
Попытался, но в по - прежнему в мемо ничего не появляется
Вот такой код:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
procedure TForm1.Timer2Timer(Sender: TObject);
var vrag:string;
s,s1:string;
Http  : TidHttp;
Data  : TStringList;
var p: TPregArray;
begin
HTTP := TIdHTTP.Create(nil); // HTTP
HTTP.HandleRedirects := True;
application.ProcessMessages;
// Чтобы не выдавало ошибку 302, в Delphi 2010 не важно
HTTP.AllowCookies := True;
HTTP.request.useragent :='Mozilla/5.0 (Windows NT 6.1; WOW64; rv:12.0) Gecko/20100101 Firefox/12.0';
HTTP.CookieManager := IdCookieManager1;
Http := TIdHTTP.Create(Self);
application.ProcessMessages;
S:=idhttp1.get('http://'+sedit2.Text+'.darkorbit.bigpoint.com/indexInternal.es?action=internalStart&dosid='+sedit1.Text);
application.ProcessMessages;
UTF8toANSI(s);
if preg.match_all('/(игрок.+?)<br/i',s,p) then begin
    // [url]http://jqbook.narod.ru/delphi/preg.htm[/url]
    smemo1.lines.add   (p[1].Text);
    p.free;
  end;
0
03.08.2012, 11:36
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
03.08.2012, 11:36

Спарсить нужное значение
Здравствуйте уважаемые форумчане. Помогите спарсить нужное значение. ...

Спарсить текст с задержкой
Вот есть сайт для проверки или оценки стоимости сайтов, форумов. Приходится...

Delphi как спарсить?
Помогите спарсить! Я нашел на вашем сайте код: function...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru