Конференция "Основная" » Работа с Web-платформой Olymp Trade
 
  • TraderProg © (14.02.18 19:25) [19]
    Итак, с ценой тоже вышло по индексу "6". Вот код:

    procedure TForm1.Button8Click(Sender: TObject);
    Var i: Integer; Doc, List, Node: OleVariant;
    Begin
     Doc:=WebBrowser1.Document;
     List:=Doc.querySelectorAll('text');
     Node:=List.item(6);
     Memo1.Lines.Clear;
     Memo1.Lines.Add(Node.innerHTML);
    end;

    Только одно маленькое "НО" осталось: в WebBrowser цена сама меняется - мне программно для этого даже делать ничего не надо. Но как оно происходит? Наверно генерируется какое-то событие и цена в нем обновляется? Если это так то какое это событие?
    Можно конечно повесить таймер и обновлять периодически цену. Но может можно обойтись без этого и обновлять цену в Memo1 лишь тогда, когда она изменяется в WebBrowser? Есть идеи как это сделать?
  • TraderProg © (14.02.18 19:25) [19]
    Итак, с ценой тоже вышло по индексу "6". Вот код:

    procedure TForm1.Button8Click(Sender: TObject);
    Var i: Integer; Doc, List, Node: OleVariant;
    Begin
     Doc:=WebBrowser1.Document;
     List:=Doc.querySelectorAll('text');
     Node:=List.item(6);
     Memo1.Lines.Clear;
     Memo1.Lines.Add(Node.innerHTML);
    end;

    Только одно маленькое "НО" осталось: в WebBrowser цена сама меняется - мне программно для этого даже делать ничего не надо. Но как оно происходит? Наверно генерируется какое-то событие и цена в нем обновляется? Если это так то какое это событие?
    Можно конечно повесить таймер и обновлять периодически цену. Но может можно обойтись без этого и обновлять цену в Memo1 лишь тогда, когда она изменяется в WebBrowser? Есть идеи как это сделать?
  • TraderProg © (14.02.18 20:56) [20]
    Похоже я обрадовался преждевременно. Захожу значит через полчаса и уже в плане цены не 11 элементов, а уже 13 (видать вебстраница слегка изменилась) и соответственно цена уже идет не по индексу 6, а  по индексу 8. А если бы это произошло во время торговли? Последствия могли бы быть печальными. Как же быть, чтобы искать не по конкретным цифрам по индексу, а как-то более надежно?
  • TraderProg © (14.02.18 20:56) [20]
    Похоже я обрадовался преждевременно. Захожу значит через полчаса и уже в плане цены не 11 элементов, а уже 13 (видать вебстраница слегка изменилась) и соответственно цена уже идет не по индексу 6, а  по индексу 8. А если бы это произошло во время торговли? Последствия могли бы быть печальными. Как же быть, чтобы искать не по конкретным цифрам по индексу, а как-то более надежно?
  • TraderProg © (14.02.18 20:56) [20]
    Похоже я обрадовался преждевременно. Захожу значит через полчаса и уже в плане цены не 11 элементов, а уже 13 (видать вебстраница слегка изменилась) и соответственно цена уже идет не по индексу 6, а  по индексу 8. А если бы это произошло во время торговли? Последствия могли бы быть печальными. Как же быть, чтобы искать не по конкретным цифрам по индексу, а как-то более надежно?
  • TraderProg © (14.02.18 20:56) [20]
    Похоже я обрадовался преждевременно. Захожу значит через полчаса и уже в плане цены не 11 элементов, а уже 13 (видать вебстраница слегка изменилась) и соответственно цена уже идет не по индексу 6, а  по индексу 8. А если бы это произошло во время торговли? Последствия могли бы быть печальными. Как же быть, чтобы искать не по конкретным цифрам по индексу, а как-то более надежно?
  • TraderProg © (14.02.18 20:56) [20]
    Похоже я обрадовался преждевременно. Захожу значит через полчаса и уже в плане цены не 11 элементов, а уже 13 (видать вебстраница слегка изменилась) и соответственно цена уже идет не по индексу 6, а  по индексу 8. А если бы это произошло во время торговли? Последствия могли бы быть печальными. Как же быть, чтобы искать не по конкретным цифрам по индексу, а как-то более надежно?
  • TraderProg © (14.02.18 20:56) [20]
    Похоже я обрадовался преждевременно. Захожу значит через полчаса и уже в плане цены не 11 элементов, а уже 13 (видать вебстраница слегка изменилась) и соответственно цена уже идет не по индексу 6, а  по индексу 8. А если бы это произошло во время торговли? Последствия могли бы быть печальными. Как же быть, чтобы искать не по конкретным цифрам по индексу, а как-то более надежно?
  • Redmond (14.02.18 21:12) [21]
    Да, привязываться к индексу плохая идея. Да и обращаться к List.item(23) не проверив что их там есть столько - тоже. Может List вообще пустой. :3

    А чего если?:
    List:=Doc.querySelectorAll('#chart > div > svg > g > g.cutoffG > text');
    ну или?:
    List:=Doc.querySelectorAll('#chart > div');

    JavaScript меняет текст. Мало ли как и откуда он его берёт и по каким внутренним событиям/таймерам срабатывает. Проще - тоже таймером.
    А чего, запоминать где-то последнее значение и сравнивать с только что полученным. Изменилось - значит изменилось, тогда что-то делаем.
  • Redmond (14.02.18 21:12) [21]
    Да, привязываться к индексу плохая идея. Да и обращаться к List.item(23) не проверив что их там есть столько - тоже. Может List вообще пустой. :3

    А чего если?:
    List:=Doc.querySelectorAll('#chart > div > svg > g > g.cutoffG > text');
    ну или?:
    List:=Doc.querySelectorAll('#chart > div');

    JavaScript меняет текст. Мало ли как и откуда он его берёт и по каким внутренним событиям/таймерам срабатывает. Проще - тоже таймером.
    А чего, запоминать где-то последнее значение и сравнивать с только что полученным. Изменилось - значит изменилось, тогда что-то делаем.
  • Redmond (14.02.18 21:12) [21]
    Да, привязываться к индексу плохая идея. Да и обращаться к List.item(23) не проверив что их там есть столько - тоже. Может List вообще пустой. :3

    А чего если?:
    List:=Doc.querySelectorAll('#chart > div > svg > g > g.cutoffG > text');
    ну или?:
    List:=Doc.querySelectorAll('#chart > div');

    JavaScript меняет текст. Мало ли как и откуда он его берёт и по каким внутренним событиям/таймерам срабатывает. Проще - тоже таймером.
    А чего, запоминать где-то последнее значение и сравнивать с только что полученным. Изменилось - значит изменилось, тогда что-то делаем.
  • Redmond (14.02.18 21:12) [21]
    Да, привязываться к индексу плохая идея. Да и обращаться к List.item(23) не проверив что их там есть столько - тоже. Может List вообще пустой. :3

    А чего если?:
    List:=Doc.querySelectorAll('#chart > div > svg > g > g.cutoffG > text');
    ну или?:
    List:=Doc.querySelectorAll('#chart > div');

    JavaScript меняет текст. Мало ли как и откуда он его берёт и по каким внутренним событиям/таймерам срабатывает. Проще - тоже таймером.
    А чего, запоминать где-то последнее значение и сравнивать с только что полученным. Изменилось - значит изменилось, тогда что-то делаем.
  • Redmond (14.02.18 21:12) [21]
    Да, привязываться к индексу плохая идея. Да и обращаться к List.item(23) не проверив что их там есть столько - тоже. Может List вообще пустой. :3

    А чего если?:
    List:=Doc.querySelectorAll('#chart > div > svg > g > g.cutoffG > text');
    ну или?:
    List:=Doc.querySelectorAll('#chart > div');

    JavaScript меняет текст. Мало ли как и откуда он его берёт и по каким внутренним событиям/таймерам срабатывает. Проще - тоже таймером.
    А чего, запоминать где-то последнее значение и сравнивать с только что полученным. Изменилось - значит изменилось, тогда что-то делаем.
  • Redmond (14.02.18 21:12) [21]
    Да, привязываться к индексу плохая идея. Да и обращаться к List.item(23) не проверив что их там есть столько - тоже. Может List вообще пустой. :3

    А чего если?:
    List:=Doc.querySelectorAll('#chart > div > svg > g > g.cutoffG > text');
    ну или?:
    List:=Doc.querySelectorAll('#chart > div');

    JavaScript меняет текст. Мало ли как и откуда он его берёт и по каким внутренним событиям/таймерам срабатывает. Проще - тоже таймером.
    А чего, запоминать где-то последнее значение и сравнивать с только что полученным. Изменилось - значит изменилось, тогда что-то делаем.
  • Redmond (14.02.18 21:19) [22]
    А на случай если веб-страницу изменят авторы - параметры для querySelectorAll() можно вынести во внешний файл. Типа файл с настройками. Что-то вроде *.ini / *.json / *.xml.
  • Redmond (14.02.18 21:19) [22]
    А на случай если веб-страницу изменят авторы - параметры для querySelectorAll() можно вынести во внешний файл. Типа файл с настройками. Что-то вроде *.ini / *.json / *.xml.
  • Redmond (14.02.18 21:19) [22]
    А на случай если веб-страницу изменят авторы - параметры для querySelectorAll() можно вынести во внешний файл. Типа файл с настройками. Что-то вроде *.ini / *.json / *.xml.
  • Redmond (14.02.18 21:19) [22]
    А на случай если веб-страницу изменят авторы - параметры для querySelectorAll() можно вынести во внешний файл. Типа файл с настройками. Что-то вроде *.ini / *.json / *.xml.
  • Redmond (14.02.18 21:19) [22]
    А на случай если веб-страницу изменят авторы - параметры для querySelectorAll() можно вынести во внешний файл. Типа файл с настройками. Что-то вроде *.ini / *.json / *.xml.
  • Redmond (14.02.18 21:19) [22]
    А на случай если веб-страницу изменят авторы - параметры для querySelectorAll() можно вынести во внешний файл. Типа файл с настройками. Что-то вроде *.ini / *.json / *.xml.
 
Конференция "Основная" » Работа с Web-платформой Olymp Trade
Есть новые Нет новых   [119545   +55][b:0.001][p:0.001]