[ Delphi / Pascal ] — начинающим: задаем вопросы

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by begin_end, 28 Apr 2015.

  1. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Нет, ссылки совпадают при перекодировке и даже webbrowser открывает всё правильно !
     
  2. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    А всё таки как проверить в webbrowser загрузилась ли полностью страница ?
    Если так:
    Code:
    procedure TForm1.WebBrowser1DownloadComplete(Sender: TObject);
    var
    str:string;
    begin
    str:=Webbrowser1.OleObject.Document.body.innerHTML;
    end;
    
    То получаю критическую ошибку на строчке str:=Webbrowser1.OleObject.Document.body.innerHTML;
    А это означает что всё же страница не загрузилась до конца (
     
  3. VladimirV

    VladimirV Well-Known Member

    Joined:
    1 Apr 2013
    Messages:
    1,130
    Likes Received:
    6,150
    Reputations:
    57
    используйте - 'onDocumentComplete'
     
  4. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Собственно всё равно я не получаю корректный результат ссылок чтобы парсить ! Ссылки только на ютуб и гугл больше ничего !
    Возможно я установил Runtime зря, но даже и при https всё равно нет !

    Code:
    procedure TForm1.Button10Click(Sender: TObject);
    var
    str:string;
    i:integer;
    http:thttpsend;
    html:tstringlist;
    begin
    http:=Thttpsend.Create;
    html:=tstringlist.Create;
    http.HTTPMethod('GET','http://www.google.ru/#newwindow=1&q=cs 1.6);
    html.LoadFromStream(http.document);
    Memo6.Lines.AddStrings(html);
    end;
    
     
  5. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Как в Synapse thttpsend получить текущий url страницы ?
    Code:
    Memo6.Lines.Add(http.targethost);
    отображает кажется не полный url :(
    Вывод только один вообщем
    Code:
    Memo6.Lines.LoadFromStream(http.Document);
    Не правильное получение html кода страницы !
     
    #145 triblekill, 21 Nov 2015
    Last edited: 21 Nov 2015
  6. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Выяснилось что Delphi s:String не хватает символы: &, # !

    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    str:string;
    begin
    str:=('&можешь не пытаться&');
    Showmessage(str);
    Результат:
    можешь не пытаться
     
  7. VladimirV

    VladimirV Well-Known Member

    Joined:
    1 Apr 2013
    Messages:
    1,130
    Likes Received:
    6,150
    Reputations:
    57
    [​IMG]
    Какая Delphi?
     
    triblekill and binarymaster like this.
  8. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    o_o Delphi 7 у меня !
     
  9. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
  10. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Полагаю, единичный символ & в диалоге задаёт подчёркивание для горячей клавиши, при удержании кнопки Alt.
     
  11. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    А стоит ли у вас Alpha Skins у кого правильно выводит ? подозреваю что правильное отображение & может крыться в нём ( очень не хочется сносить (((.
    Кто может киньте пжл на форму sskinmanager выберите скин и попробуйте выводит ли теперь &
     
  12. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Вот так работает короче )
    Code:
    procedure TForm1.Button1Click(Sender: TObject);
    var
    str:string;
    begin
    str:=('&&можешь не пытаться&&');
    Showmessage(str);
    Две &&=одной ))))))
     
    #152 triblekill, 26 Nov 2015
    Last edited: 26 Nov 2015
  13. #colorblind

    #colorblind Moderator

    Joined:
    31 Jan 2014
    Messages:
    634
    Likes Received:
    246
    Reputations:
    42
    я так и написал вроде)
     
  14. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Сори сразу не увидел ) сам гадал гадал )
     
  15. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Как работать со списком прокси ?

    Code:
    var
    proxys:tstringlist;
    curproxy:integer;
    begin
    proxys.LoadFromFile(opendialog1.FileName);
    ip:=Copy(proxys[CurProxy],1,Pos(':', proxys[CurProxy])-1);
    port:=Copy(proxys[CurProxy], Pos(':', proxys[CurProxy])+1, Length(proxys[CurProxy]));
    Showmessage(ip);
    
    Результат:
    Первый верхний ip из выбранного листа и всё ( тоже самое и с портом (
     
  16. binarymaster

    binarymaster Elder - Старейшина

    Joined:
    11 Dec 2010
    Messages:
    4,717
    Likes Received:
    10,195
    Reputations:
    126
    Меняйте индекс curproxy.
     
    VladimirV likes this.
  17. VladimirV

    VladimirV Well-Known Member

    Joined:
    1 Apr 2013
    Messages:
    1,130
    Likes Received:
    6,150
    Reputations:
    57
    Во первых у Вас вроде ошибка (не правильно указываете длину) в:
    нужно примерно так: port:=Copy(proxys[CurProxy], Pos(':', proxys[CurProxy])+1, Length(proxys[CurProxy]-)-(Pos(':', proxys[CurProxy])));

    Покажите как Вы вызываете эту процедуру или функцию.
    Проще говоря Вы пытаетесь из строки 30 символов скопировать 5 символов длинной в 30 символов.
     
    #157 VladimirV, 27 Nov 2015
    Last edited: 27 Nov 2015
  18. crystalbit

    crystalbit Elder - Старейшина

    Joined:
    6 Jun 2008
    Messages:
    212
    Likes Received:
    88
    Reputations:
    8
    У него тоже допустимо, так как до конца нужно, а длина всей строки всегда больше длины нужного участка. А можно не париться и писать в таких случаях MaxINT.

    Давайте уже на учебник триблкиллу скинемся)
     
    #colorblind likes this.
  19. triblekill

    triblekill Member

    Joined:
    21 Aug 2011
    Messages:
    351
    Likes Received:
    94
    Reputations:
    1
    Я вот так вызываю процедуру:

    Code:
    HTTP:=THTTPSend.Create;
    ip:=Copy(proxys[CurProxy],1,Pos(':', proxys[CurProxy])-1);
    port:=Copy(proxys[CurProxy], Pos(':', proxys[CurProxy])+1, Length(proxys[CurProxy]));
    http.ProxyHost:=ip;
    http.ProxyPort:=port;
    with THTTPSend.Create do
      begin
        if HTTPMethod('GET','http://www.ya.ru') then begin
    А если не открыл я пока не понимаю как перейти к следующему прокси из списка-(((( наверное лучше даже по таймеру будет менять
    
     
    #159 triblekill, 27 Nov 2015
    Last edited: 27 Nov 2015
  20. VladimirV

    VladimirV Well-Known Member

    Joined:
    1 Apr 2013
    Messages:
    1,130
    Likes Received:
    6,150
    Reputations:
    57
    после выбора очередного прокси допишите:
    CurProxy:= CurProxy + 1;
    if CurProxy >= proxys.count -1 then CurProxy:=0;
    так они будут выбираться по кругу.
    только CurProxy должна быть глобальной и равна 0.