1 (edited by Роман 2016-09-22 11:24:33)

Topic: функция s := HTTPGet('url страницы');

Друзья всем привет!!!
Попытался самостоятельно разобраться с функция s := HTTPGet('url страницы');,
но как говориться не хватает знаний...
=====================================================================================
УМЫСЕЛ конечного результата:
по клику Button1.....
открываем OpenDialog...выбрав документ...импортируем его в:
ТАБЛИЦУ "ААА" с полем "Ticket"(текст), "Open_Time"(дата/время), "id_Type"(словарь), "Size"(вещ.число)
P.S. документ прилагается...
======================================================================================
получить готовый результат...был бы конечно подарком судьбы (на форуме всего один пример
у mathmathou..."http://myvisualdatabase.com/forum/viewtopic.php?id=1851",
но как я понимаю не всё так просто и быстро...
ИСХОДЯ ИЗ ЭТОГО ПРОШУ ПОМОЩИ...как минимум:
вытащить исходный код документа в Memo1...

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
   OpenDialog: TOpenDialog;
   s,n :string;

begin
     OpenDialog := TOpenDialog.Create(Form1);
     if OpenDialog.Execute then
begin
      n:= OpenDialog.FileName;  //узнать адресс папки
      s :=HTTPGet(n);
      Form1.Memo1.Text:= (s);
end;
end;

Проблема в том, что файл только открывается Yandex Browser, а находиться может на диске "С", в папке MVD или на флешке...
т.е.подключения интернета нет...вобщем выдаёт ошибку:  "Unknown Protocol"
Подскажите где ошибка в скрипте????????????????????????????????????
                                                            С Уважением и Благодарностью Роман!!!

Post's attachments

Attachment icon HTML.zip 71.68 kb, 412 downloads since 2016-09-22 

Re: функция s := HTTPGet('url страницы');

функция HTTPGet предназначена для того, чтобы получить данные из интернета по протоколу http, в вашем случае будет достаточно

     OpenDialog := TOpenDialog.Create(Form1);
     if OpenDialog.Execute then Form1.Memo1.Lines.LoadFromFile(OpenDialog.FileName);
     OpenDialog.Free;
Dmitry.

3 (edited by Роман 2016-09-25 08:55:37)

Re: функция s := HTTPGet('url страницы');

Дмитрий...СПАСИБО...это РАБОТАЕТ!!!
следующий этап..........
Загрузив в Memo1 (исходный код)...ищем значения, которые равны требованию...вставляем вMemo2

procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);

var
    OpenDialog: TOpenDialog;

    SourceVerNumber : String;     //Исходный код страницы для поиска номера версий
    PosVerNumber1 : Integer;      //Положение начало тега перед номером версии
    PosVerNumber2 : Integer;      //Положение начала метки после номера версии
begin

        OpenDialog := TOpenDialog.Create(Form1);
     if OpenDialog.Execute then
        Form1.Memo1.Lines.LoadFromFile(OpenDialog.FileName);
begin

    {1}    SourceVerNumber := Form1.Memo1.Text;
    {2}    PosVerNumber1 := Pos('right><td>',SourceVerNumber);
    {3}    Delete (SourceVerNumber,1,PosVerNumber1-1+Length('right><td>'));
    {4}    PosVerNumber2 := Pos('</td>',SourceVerNumber);
    {5}    Delete (SourceVerNumber,PosVernumber2,1000000);
    {6}    SourceVerNumber := Trim(SourceVernumber);
    {7}    Form1.Memo2.Text := SourceVerNumber;

        end;
        OpenDialog.Free;
end;

   
ПРОБЛЕМА в том, что в Memo2 попадает только одно значение(самое первое)...,
а в исходном коде их много...
я понимаю...надо прописать переменные...но методом "народного-тыка" у меня не получилось!
Дмитрий помогите дописать скрипт, что бы в Memo2 попали все значения
найденные в исходном коде?????????????????????????????????????????????????????????
                                                                              С Уважением и Благодарностью Роман!!!

Re: функция s := HTTPGet('url страницы');

Роман
Необходимо найти все значения в тексте которые расположены между right><td> и </td> ?
Приведите пожалуйста фрагмент текстового содердимого файла, в котором необходимо найти эти значения.

Dmitry.

5 (edited by Роман 2016-09-26 19:39:33)

Re: функция s := HTTPGet('url страницы');

DriveSoft wrote:

Роман
Необходимо найти все значения в тексте которые расположены между right><td> и </td> ?
Приведите пожалуйста фрагмент текстового содердимого файла, в котором необходимо найти эти значения.

Дмитрий хотел пойти по этапно...но боюсь заблудить Вас...и отделить себя до конечного результата...
=============================================================================================
Конечная цель заполнить:
таблицу "ААА"
с полем "Ticket"(текст)..."Open Time"(дата)..."id_Type"(словарь)..."Size"(вещ.число)..."Item"..."Price"..."S_L"...
"T_P"..."Close Time"..."Price"..."Commission"..."Taxes"..."Swap"..."Profit"
============================================================================================
кусочек исходного кода:               

(1 строчка)<tr bgcolor=#E0E0E0 align=right><td>[b]1753736490[/b]</td><td nowrap>[b]2016.04.04 09:43:39[/b]</td><td>[b]sell[/b]</td><td class=mspt>[b]0.08[/b]</td><td>[b]eurusd[/b]</td><td style="mso-number-format:0\.0000;">[b]1.1384[/b]</td><td style="mso-number-format:0\.0000;">[b]1.1407[/b]</td><td style="mso-number-format:0\.0000;">[b]1.1318[/b]</td><td class=msdate nowrap>[b]2016.04.06 11:33:07[/b]</td><td style="mso-number-format:0\.0000;">[b]1.1348[/b]</td><td class=mspt>[b]0.00[/b]</td><td class=mspt>[b]0.00[/b]</td><td class=mspt>[b]0.34[/b]</td><td class=mspt>[b]28.80[/b]</td></tr>
(2 строчка)<tr align=right><td>[b]1753980937[/b] </td><td nowrap>[b]2016.04.06 11:26:35[/b] </td><td>[b]buy[/b]</td><td class=mspt>[b]4.00[/b] </td><td>[b]eurusd[/b] </td><td style="mso-number-format:0\.0000;">[b]1.1342[/b] </td><td style="mso-number-format:0\.0000;">[b]1.1343[/b] </td><td style="mso-number-format:0\.0000;">[b]1.1451[/b] </td><td class=msdate nowrap>[b]2016.04.06 23:32:09[/b] </td><td style="mso-number-format:0\.0000;">[b]1.1395[/b] </td><td class=mspt>[b]0.00[/b] </td><td class=mspt>[b]0.00[/b] </td><td class=mspt>[b]0.00[/b] </td><td class=mspt>[b]2 120.00[/b] </td></tr>
(3 строчка)<tr bgcolor=#E0E0E0 align=right><td>[b]1754057548[/b]</td><td nowrap>[b]2016.04.06 22:13:23[/b]</td><td>[b]sell[/b]</td><td class=mspt>[b]10.00[/b]</td><td>[b]eurusd[/b]</td><td style="mso-number-format:0\.0000;">[b]1.1404[/b]</td><td style="mso-number-format:0\.0000;">[b]1.1403[/b]</td><td style="mso-number-format:0\.0000;">[b]1.1310[/b]</td><td class=msdate nowrap>[b]2016.04.07 02:22:11[/b]</td><td style="mso-number-format:0\.0000;">[b]1.1399[/b]</td><td class=mspt>[b]0.00[/b]</td><td class=mspt>[b]0.00[/b]</td><td class=mspt>[b]66.00[/b]</td><td class=mspt>[b]500.00[/b]</td></tr>

исходник HTML прилагается...прошу прощения жирным хотел выделить нужные значения!

Post's attachments

Attachment icon HTML.zip 9.21 kb, 441 downloads since 2016-09-26 

Re: функция s := HTTPGet('url страницы');

Можете производить поиск по отдельных строкам, пример

procedure Form1_Button1_OnClick (Sender: string; var Cancel: boolean);
var
    i,c: integer;
    s: string;
begin
     c := Form1.Memo1.Lines.Count-1;
     for i := 0 to c do
     begin
         s := Form1.Memo1.Lines[i]; // в переменной s поочередно будет попадать каждая строка, 

         {...}
     end;
end;
Dmitry.

7 (edited by Роман 2016-09-29 08:58:24)

Re: функция s := HTTPGet('url страницы');

Дмитрий огромное СПАСИБО Вам за поддержку!!!
не бросайте на пол-пути...("я начал городить огород")

procedure Form1_Button2_OnClick (Sender: string; var Cancel: boolean);

var
    OpenDialog: TOpenDialog;
    HTML : TStringList;
    SourceVerNumber : String;     //Исходный код страницы для поиска номера версий
    PosVerNumber1 : Integer;      //Положение начало тега перед номером версии
    PosVerNumber2 : Integer;      //Положение начала метки после номера версии

    i,c: integer;
    s: string;

begin

        OpenDialog := TOpenDialog.Create(Form1);
     if OpenDialog.Execute then


begin
         HTML := TStringList.Create;
         HTML.LoadFromFile(OpenDialog.FileName);

         Form1.Memo1.Text:= (HTML.Text);

         c := Form1.Memo1.Lines.Count-1;
     for i := 0 to c do
begin

           s:= Form1.Memo1.Lines[i]; // в переменной s поочередно будет попадать каждая строка,
 //====================== ОТСЮДА У МЕНЯ ТЁМНЫЙ ЛЕС ==============================================================
           if s[0] <> '' then //SourceVerNumber[0] := //''''+ ReplaceStr(s[0], '''', '''''') + ''''
                   //else s[0] := 'NULL';

    {1}    SourceVerNumber := (s);
    {2}    PosVerNumber1 := Pos('right><td>',SourceVerNumber);
    {3}    Delete (SourceVerNumber,1,PosVerNumber1-1+Length('right><td>'));
    {4}    PosVerNumber2 := Pos('</td>',SourceVerNumber);
    {5}    Delete (SourceVerNumber,PosVernumber2,1000000);
    {6}    SourceVerNumber := Trim(SourceVernumber);
    {7}    //Form1.Memo2.Text := SourceVerNumber;

           s[0] :=SourceVerNumber;

          // else s[0] := 'NULL';

          SQLExecute ('INSERT INTO base (lastname) VALUES ('+ SourceVerNumber[0] +');');

            end;
        end;
        OpenDialog.Free;
end;

помогите откорректировать мой "чудо скрипт" ПОЖАЛУЙСТА...
                                               С Уважением и Благодарностью Роман!!!

8 (edited by Роман 2016-09-29 11:18:38)

Re: функция s := HTTPGet('url страницы');

smile Дмитрий взгляните пост №7...???

Re: функция s := HTTPGet('url страницы');

Роман wrote:

smile Дмитрий взгляните пост №7...???

На сколько я помню вы пользователь пиратской версии программы, к сожалению я не могу оказать вам техническую поддержку в полной мере.

Dmitry.