[Delphi-циклы]Видно в понедельник мама родила

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by Kandi, 26 Sep 2010.

  1. Kandi

    Kandi Member

    Joined:
    18 Nov 2009
    Messages:
    344
    Likes Received:
    17
    Reputations:
    0
    Привет всем) подскажите пожалуйста, есть главная форма, есть поток, есть цикл в потоке. Цикл делает приглашение, но вот когда вылетает капча ... он всё ровно продолжает приглашать. это устранил:
    Code:
        if Pos('captcha_sid', Page1.Text)<>0 then
          begin
            sid := Page1.Text;
            sid := Copy(sid, Pos('":"', sid) + 3, Length(sid));
            Delete(sid, Pos(#34, sid), Length(sid));
            MainForm.MemoLog.Lines.Add('Поймали капчу, введите её!');
            // Выводим капчу в форме!
          end;
    
    Как приостановить цикл до ввода капчи, если можно пример? и как из формы в цикл передать капчу? что то я не врублюсь до конца....видать Фленов плохо учит.... :(

    Еще вопрос про капчу к тем кто мб работал с Контактом, сид даже если мы спарсили, и делаем get Запрос на страницу капчи:
    Code:
    http://vkontakte.ru/captcha.php?s=1&sid=992055349565
    
    он нам возвращает картинку....но сейчас капча всё время меняется при каждом гет запросе.....это вообще как нормал? :confused:
     
  2. M_script

    M_script Members of Antichat

    Joined:
    4 Nov 2004
    Messages:
    2,582
    Likes Received:
    1,310
    Reputations:
    1,557
    Все нормально, получил sid - скачал капчу. Зачем много гет-запросов делать?
     
  3. Jingo Bo

    Jingo Bo Member

    Joined:
    25 Oct 2009
    Messages:
    368
    Likes Received:
    51
    Reputations:
    7
    ТС, изучай общие принципы синхронизации, вот что я могу сказать, инфы море в гугле.
     
  4. 090808

    090808 Member

    Joined:
    15 Mar 2009
    Messages:
    171
    Likes Received:
    46
    Reputations:
    10
    Code:
     procedure Potok.captcha;
    var
    Imp : TJpegImage; //В uses jpeg
    Mp : TMemoryStream;
    kuka,sid:string;
    http: TIdHTTP;
    begin
    http:=TIdHTTP.Create(nil);
    form1.Memo.Lines.Add('Кача');
    repeat
    try
    kuka:=http.Get('http://vk.com/login.php?op=a_login_attempt');
    except end;
    sid:=copy(kuka,25,12);
    Imp := TJpegImage.Create;
    Mp := TMemoryStream.Create;
    Http.Get('http://vkontakte.ru/captcha.php?s=1&sid=' + sid, Mp);
    Mp.Position := 0;
    imp.LoadFromStream(mp);
    imp.SaveToFile(sid+'.jpeg');
    form1.Image1.Picture.Graphic := imp;
    
    while cap=true do sleep(200);
    cap:=true;
    deletefile(sid+'.jpeg');
    kuka:=HTTP.Get('http://vk.com/login.php?op=a_login_attempt&captcha_sid='+sid+'&captcha_key='+skey);
    until  pos('vklogin',kuka)<>0;
    end;
    

    Кидаем глобальную переменную cap:boolean;
    Ну и сообственно, дальше вводим капчу, жмём кнопку на кнопке cap:=false;



    Это пример реализации на вход.