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

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

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

Восстановить пароль

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

Закрытая тема
Ваша тема закрыта, почему это могло произойти? Возможно,
Нет наработок или кода, если нужно готовое решение - создайте тему в разделе Фриланс и оплатите работу.
Название темы включает слова - "Помогите", "Нужна помощь", "Срочно", "Пожалуйста".
Название темы слишком короткое или не отражает сути вашего вопроса.
Тема исчерпала себя, помните, один вопрос - одна тема
Прочитайте правила и заново правильно создайте тему.
 
Опции темы Поиск в этой теме
Старый 20.06.2014, 21:36   #11
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

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

function ParsFromString(AValueBegin, AValue, AValueEnd: string): string;
begin
  Result := Copy(AValue, Pos(AValueBegin, AValue) + Length(AValueBegin), MaxInt);
  Result := Copy(Result, 1, Pos(AValueEnd, Result) - 1);
end;

{ TMainForm }

procedure TMainForm.ParsingButtonClick(Sender: TObject);
const
  ValueBegin = '<table class="center paddTD10 dataTable maxWidth"';
  ValueEnd = '</table>';
var
  RegExpr: TRegExpr;
  AValue: string;
  S: string;
begin
  // в AValue должен находиться полный исходный код страницы
  AValue := 'view-source:http://www.myfxbook.com/community/outlook/EURUSD';

  AValue := ParsFromString(ValueBegin, AValue, ValueEnd);

  RegExpr := TRegExpr.Create;
  try
    RegExpr.Expression := '<tr>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)</tr>';

    if RegExpr.Exec(AValue) then
    repeat
      S := '';
      S := S + 'Action = ' + RegExpr.Match[2] + #13#10;
      S := S + 'Percentage = ' + RegExpr.Match[4] + #13#10;
      S := S + 'Volume = ' + RegExpr.Match[6] + #13#10;
      S := S + 'Positions = ' + RegExpr.Match[8] + #13#10;

      ShowMessage(S);

    until not RegExpr.ExecNext;
  finally
    RegExpr.Free;
  end;
end;
Чеснто сказать я не ожидал такого ответа, думал ща начнется "изучи это..." или "прочто это" большое вам человеческое спасибо а можно про коментировать исходник чтоб я понял оканчально... спасибо)
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Старый 20.06.2014, 21:47   #12
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

Какие моменты не понятны?
Lardes вне форума
Старый 20.06.2014, 21:54   #13
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Lardes Посмотреть сообщение
Какие моменты не понятны?
если чесно все) можно по подробней про коментировать все строки? заранее спасибо завтра отвечу...

Цитата:
Сообщение от Lardes Посмотреть сообщение
Какие моменты не понятны?
Вот сделал так но у меня что-то не парсит...
Код:
unit Unit1;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, IdBaseComponent, IdComponent, IdTCPConnection,
  IdTCPClient, IdHTTP, RegExpr;

type
  TForm1 = class(TForm)
    mmo1: TMemo;
    mmo2: TMemo;
    btn1: TButton;
    IdHTTP1: TIdHTTP;
    procedure btn1Click(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

function ParsFromString(AValueBegin, AValue, AValueEnd: string): string;
begin
  Result := Copy(AValue, Pos(AValueBegin, AValue) + Length(AValueBegin), MaxInt);
  Result := Copy(Result, 1, Pos(AValueEnd, Result) - 1);
end;

procedure TForm1.btn1Click(Sender: TObject);
const
  ValueBegin = '<table class="center paddTD10 dataTable maxWidth"';
  ValueEnd = '</table>';
var
  RegExpr: TRegExpr;
  AValue: string;
  S: string;
begin
  AValue := mmo1.Text; // Сюда внес...
  AValue := ParsFromString(ValueBegin, AValue, ValueEnd);
  RegExpr := TRegExpr.Create;
  try
    RegExpr.Expression := '<tr>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)<td>(.*?)</td>(.*?)</tr>';
    if RegExpr.Exec(AValue) then
    repeat
      S := '';
      S := S + 'Action = ' + RegExpr.Match[2] + #13#10;
      S := S + 'Percentage = ' + RegExpr.Match[4] + #13#10;
      S := S + 'Volume = ' + RegExpr.Match[6] + #13#10;
      S := S + 'Positions = ' + RegExpr.Match[8] + #13#10;

      mmo2.Lines.Add((S)); // Сюда надо было вписать.... но не чо не выходит

    until not RegExpr.ExecNext;
  finally
    RegExpr.Free;
  end;
end;

end.
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Stilet; 21.06.2014 в 20:02.
Fahman вне форума
Старый 21.06.2014, 20:04   #14
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Сюда надо было вписать.... но не чо не выходит
Отладка что показывает?
RegExpr.Exec отрабатывает или дает False?
I'm learning to live...
Stilet вне форума
Старый 21.06.2014, 20:19   #15
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

А что в mmo1? Полный исходный код страницы?
Lardes вне форума
Старый 21.06.2014, 20:39   #16
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Stilet Посмотреть сообщение
Отладка что показывает?
RegExpr.Exec отрабатывает или дает False?
Не чо не показывает все вроде компилирует без б...

А что в mmo1? Полный исходный код страницы?
да взял исходный код скопировал и вставил ну не через "idhttp"
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Старый 21.06.2014, 21:03   #17
Stilet
Белик Виталий :)
Старожил
 
Аватар для Stilet
 
Регистрация: 23.07.2007
Сообщений: 57,097
По умолчанию

Цитата:
Не чо не показывает все вроде компилирует без б...
Не компиляция, а отладка )
Отладку-пошаговку делал? Бряк на код ставил?
I'm learning to live...
Stilet вне форума
Старый 21.06.2014, 21:10   #18
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Оо по пробовал через idhttp все норм почти вот что спарсил
Action = Long
Percentage = 57%
Volume = 9338.63 Lots
Positions = 26636
Спарсилось только "Long" а как спарсить еще и "Short" позиции? ну вторая строка в таблице? можно даже и без слов так
57%
9338.63 Lots
26636
слова не обязательно я потом сделаю в StringGrid.

Цитата:
Сообщение от Stilet Посмотреть сообщение
Не компиляция, а отладка )
Отладку-пошаговку делал? Бряк на код ставил?
Про отладку не знаю) ща по читаю....
99% ошибок компьютера сидит в полуметре от монитора.

Последний раз редактировалось Stilet; 21.06.2014 в 21:23.
Fahman вне форума
Старый 21.06.2014, 21:16   #19
Lardes
Форумчанин
 
Аватар для Lardes
 
Регистрация: 19.08.2011
Сообщений: 329
По умолчанию

У меня всё отлично парсится, я не знаю что Вы делаете не так
Lardes вне форума
Старый 21.06.2014, 21:34   #20
Fahman
Форумчанин
 
Аватар для Fahman
 
Регистрация: 03.04.2013
Сообщений: 703
По умолчанию

Цитата:
Сообщение от Lardes Посмотреть сообщение
У меня всё отлично парсится, я не знаю что Вы делаете не так
не я не говорю что норм стало только спарсил одну строку из таблицы а их же две....

Stilet
а какую именно отладку запускать?
я запускал
Breakpoints и CallStack ни чего не выходит такого подозрительного...
99% ошибок компьютера сидит в полуметре от монитора.
Fahman вне форума
Закрытая тема


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



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Проблема с RegExp Gdasar C++ Builder 1 07.03.2014 23:35
Проблема с RegExp Руслантус Общие вопросы .NET 3 26.02.2011 21:01
regexp в С++ Пепел Феникса Общие вопросы C/C++ 2 10.11.2010 18:26
Regexp на чистом С++ 1datr Общие вопросы C/C++ 1 05.11.2010 21:44
C++ Builder RegExp Namolem Помощь студентам 1 19.01.2010 23:13