[ Delphi / Pascal ] — начинающим: задаем вопросы (архивная - 2015)

Discussion in 'С/С++, C#, Rust, Swift, Go, Java, Perl, Ruby' started by banned, 6 May 2007.

Thread Status:
Not open for further replies.
  1. FALTONICK

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

    Joined:
    12 Feb 2009
    Messages:
    141
    Likes Received:
    246
    Reputations:
    56
    только начал изучение дельфи нужна функция поиска по определенному сайту. т.е. на сайте есть поиск к примеру http://photoshop.demiart.ru/ там справа функция поиска как эту функция перекинуть на дельфи? чтобы получилось типо:

    [ это страка поиска ]
    [кнопка поиск]
     
  2. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    1. Смотришь исходный код страницы, находишь форму поиска.
    2. Кидаешь на форму в программе Edit и Button
    3. при нажатии Button выполнять запрос.
    + Сниффер в помощь

    q=текст для поиска
    +много скрытых полей
     
    1 person likes this.
  3. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    ну даже если без них... ошибка в другом((( тот же readtimeout хотя бы должен работать в конструкции try..except... а он выдает ошибку типа время истекло и се... а должен действовать как ошибка и переходить в блок except.... вот это я никак не пойму почему не работает((
     
  4. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    Ошибка вылетает когда программа запущена под Delphi?
     
  5. EndLeSSDre@M

    EndLeSSDre@M Banned

    Joined:
    18 Jul 2009
    Messages:
    142
    Likes Received:
    99
    Reputations:
    -5
    Всегда! если как отдельным приложением то такая ошибка: "List index of bounds (3)" и дальше если идти, то всегда ошибку выдает!
     
    1 person likes this.
  6. JnK

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

    Joined:
    30 Mar 2007
    Messages:
    125
    Likes Received:
    21
    Reputations:
    0
    Из-за того, что ты запускаешь в режиме отладчика (под средой разработки) вылетает 10060 ошибка, она пропадет как только приложение будет запущено отдельно.

    насчет List index of bounds (3), проверяй список, возможно кол-во эл.-ов не соотвествует циклу, по идеи ты же удаляешь их из списка, а проходы остаются.

    Другими словами F7 и смотри где ошибка.
     
    1 person likes this.
  7. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    Что за народ то а?
    Это НЕ ошибка, это ИСКЛЮЧЕНИЕ.
    А цель его - проинформировать тебя что время истекло. А ты должен, исходя из этого обработать исключение.
    ЗЫ если ты хочешь отлаживать программу и чтобы сообщений об этом исключении не появлялось - добавь в список игнорируемых исключений. И можешь отлаживать спокойно. Это делается в опциях отладчика.
     
  8. S[N]EP

    S[N]EP Elder - Старейшина

    Joined:
    29 Aug 2008
    Messages:
    102
    Likes Received:
    28
    Reputations:
    10
    при работе с антикапчей, есть 2 кнопки
    1 получает капчу и сохраняет в файл:
    PHP:
        form2.idhttp1.Request.CustomHeaders.Text:='Cookie: '+cookie;
    streamresponse:=TMemoryStream.Create;
    d:='http://127.0.0.1/captcha.php?key='+kapchaid;
    form2.idhttp1.Get(d,streamresponse);
     
    streamresponse.SaveToFile('rseserv.jpeg');
    после чего кнопка отправки на антикапчу:
    PHP:
    form2.edit3.Text:='recognizing...';
    form2.Button1.Enabled:=false;
    form2.edit3.Text:=recognize('rseserv.jpeg',form2.edit1.Text,false,false,false,0,0);
    form2.Button1.Enabled:=true;
    и функция recognize.
    PHP:
    function recognize(filenamestringapikeystringis_phrasebooleanis_regsensebooleanis_numericbooleanmin_lenintegermax_leninteger): string;
    var
    ftype,tmpstr,captcha_idString;
    iinteger;
    httpTIdHTTP;
    multiTidmultipartformdatastream;

    begin
    if FileExists(filename)=false then begin result:='ERROR: file not found'; exit; end;

    ftype:='image/pjpeg';
    if 
    strpos(Pchar(filename),'jpg')<>nil then ftype:='image/pjpeg';
    if 
    strpos(Pchar(filename),'gif')<>nil then ftype:='image/gif';
    if 
    strpos(Pchar(filename),'png')<>nil then ftype:='image/png';

    multi:=Tidmultipartformdatastream.Create;
    multi.AddFormField('method','post');
    multi.AddFormField('key',apikey);
    multi.AddFile('file',filename,ftype);
    if 
    is_phrase=true then multi.AddFormField('phrase','1');
    if 
    is_regsense=true then multi.AddFormField('regsense','1');
    if 
    is_numeric=true then multi.AddFormField('numeric','1');
    if 
    min_len>0 then multi.AddFormField('min_len',inttostr(min_len));
    if 
    max_len>0 then multi.AddFormField('max_len',inttostr(max_len));

    http:=TIdHTTP.Create(nil);
    tmpstr:=http.Post('http://antigate.com/in.php',multi);
    http.Free;
    captcha_id:='';
    if 
    strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
    if 
    strpos(Pchar(tmpstr),'OK|')<>nil then captcha_id:=AnsiReplaceStr(tmpstr,'OK|','');
    if 
    captcha_id='' then result:='ERROR: bad captcha id';
    for 
    i:=0 to 20 do
      
    begin
      Application
    .ProcessMessages;
      
    sleep(5000);
      
    http:=TIdHttp.Create(nil);
      
    tmpstr:=http.Get('http://antigate.com/res.php?key='+apikey+'&action=get&id='+captcha_id);
      
    http.Free;
      if 
    strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
      if 
    strpos(Pchar(tmpstr),'OK|')<>nil then
        begin
        result
    :=AnsiReplaceStr(tmpstr,'OK|','');
        exit;
        
    end;
      
    Application.ProcessMessages;
      
    end;
    result:='ERROR_TIMEOUT';
    end;
    так вот, когда первый раз отсылаю, всё работает, а когда идёт вторая попытка через определённый промежуток времени, выдаёт ошибку файл не может быть перезаписан т.к. он используется.... что делать?
     
    8 people like this.
  9. TrueBit

    TrueBit Member

    Joined:
    21 Nov 2009
    Messages:
    71
    Likes Received:
    19
    Reputations:
    4
    PHP:
    function recognize(filenamestringapikeystringis_phrasebooleanis_regsensebooleanis_numericbooleanmin_lenintegermax_leninteger): string;
    var
    ftype,tmpstr,captcha_idString;
    iinteger;
    httpTIdHTTP;
    multiTidmultipartformdatastream;

    begin
    if FileExists(filename)=false then begin result:='ERROR: file not found'; exit; end;

    ftype:='image/pjpeg';
    if 
    strpos(Pchar(filename),'jpg')<>nil then ftype:='image/pjpeg';
    if 
    strpos(Pchar(filename),'gif')<>nil then ftype:='image/gif';
    if 
    strpos(Pchar(filename),'png')<>nil then ftype:='image/png';

    multi:=Tidmultipartformdatastream.Create;
    multi.AddFormField('method','post');
    multi.AddFormField('key',apikey);
    multi.AddFile('file',filename,ftype);
    if 
    is_phrase=true then multi.AddFormField('phrase','1');
    if 
    is_regsense=true then multi.AddFormField('regsense','1');
    if 
    is_numeric=true then multi.AddFormField('numeric','1');
    if 
    min_len>0 then multi.AddFormField('min_len',inttostr(min_len));
    if 
    max_len>0 then multi.AddFormField('max_len',inttostr(max_len));

    http:=TIdHTTP.Create(nil);
    tmpstr:=http.Post('http://antigate.com/in.php',multi);
    http.Free;
    multi.free;
    captcha_id:='';
    if 
    strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
    if 
    strpos(Pchar(tmpstr),'OK|')<>nil then captcha_id:=AnsiReplaceStr(tmpstr,'OK|','');
    if 
    captcha_id='' then result:='ERROR: bad captcha id';
    for 
    i:=0 to 20 do
      
    begin
      Application
    .ProcessMessages;
      
    sleep(5000);
      
    http:=TIdHttp.Create(nil);
      
    tmpstr:=http.Get('http://antigate.com/res.php?key='+apikey+'&action=get&id='+captcha_id);
      
    http.Free;

      if 
    strpos(Pchar(tmpstr),'ERROR_')<>nil then begin result:=tmpstr; exit; end;
      if 
    strpos(Pchar(tmpstr),'OK|')<>nil then
        begin
        result
    :=AnsiReplaceStr(tmpstr,'OK|','');
        exit;
        
    end;
      
    Application.ProcessMessages;
      
    end;
    result:='ERROR_TIMEOUT';
    end;
    функцию recognize замени на эту
     
    #5869 TrueBit, 18 Apr 2010
    Last edited: 18 Apr 2010
    1 person likes this.
  10. 3n0t

    3n0t Member

    Joined:
    25 Sep 2009
    Messages:
    0
    Likes Received:
    25
    Reputations:
    1
    как узнать вес html страницы через indy ?
    или как сделатьв условии, чтобы проверялось на пустой ответ или пустую страницу?(весит 0кб)
     
  11. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    3n0t,

    я бы так сделал

    PHP:
    s:=idHTTP.Get(link);
    if 
    s<>'' then ........ else ..........
    Хотя может можно как то по другому ))
     
  12. wolmer

    wolmer Member

    Joined:
    12 May 2009
    Messages:
    438
    Likes Received:
    97
    Reputations:
    9
    ну и зря, в любом случае ты получишь хеддеры от сервера (если компьютер конечно же подкл. к сети)
    (если же не подкл. -> программа высветит ошибку окном (в данном случае (т.е. то что в этих скобках) спасает только try...except))
     
    #5872 wolmer, 18 Apr 2010
    Last edited: 18 Apr 2010
  13. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    Хотя да, не подумал ) Плохой вариант :)
     
  14. GhostOnline

    GhostOnline Active Member

    Joined:
    20 Dec 2008
    Messages:
    723
    Likes Received:
    110
    Reputations:
    22
    var
    s : string;
    size : integer;
    ...............
    s := IdHttp.Get(URL);
    size := Length(s)*SizeOf(Char);
     
  15. SENTRY

    SENTRY New Member

    Joined:
    28 Jul 2009
    Messages:
    0
    Likes Received:
    0
    Reputations:
    0
    Необходимо тут написать прожку, определяющую подключение юсб-девайса к компу. Открыл гугль, поискал, нашел вот это:
    http://www.programmersforum.ru/showthread.php?t=10295
    (см 4й пост)
    Сделал соотв модуль, поисправлял ошибки, скомпилил.
    Так вот, как теперь этой штукой пользоваться? Мне нужно, чтобы в переменной лежало значение, подключено или нет. Ну, или в ином легкодоступном месте.
     
  16. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    подскажите как програмно изменить файл хостс на нужный мне текст
     
  17. fenixelite

    fenixelite Banned

    Joined:
    7 Feb 2010
    Messages:
    294
    Likes Received:
    56
    Reputations:
    6
    stepashka_ Вот на граберз почитай :
    http://grabberz.com/showthread.php?p=112486
     
    1 person likes this.
  18. Сredo

    Сredo Member

    Joined:
    17 Apr 2010
    Messages:
    18
    Likes Received:
    10
    Reputations:
    20
    Хоть бы сказал на каком языке тебе надо!Вот пример,но рекомендую использовать относительный пусть,найди папку windows присвой ей переменную и в бой!)
    Кстати на винде 7 и висте ты не сможешь поменять хост!Но думаю ты знаешь почему)

    Var hostfiles:TextFile;
    begin
    AssignFile(hostfiles,'C:\paskal\mywrite\1.txt');
    {$I-}
    Append(hostfiles);
    if IOResult<>0 then
    begin
    {$I-}
    Rewrite(hostfiles);
    {$I+}
    if IOResult<>0 then
    begin
    Exit;
    end;
     
  19. stepashka_

    stepashka_ Мотоциклист

    Joined:
    9 Nov 2009
    Messages:
    1,022
    Likes Received:
    423
    Reputations:
    234
    В названии темы нет ЯП ?
    Твой код полный бред :)
     
  20. Сredo

    Сredo Member

    Joined:
    17 Apr 2010
    Messages:
    18
    Likes Received:
    10
    Reputations:
    20
    Полный бред?отвечаешь за слова?Если не понимаешь в программирование то не суй нос,а во вторых синтаксис паскаля и делфи слегка отличается,по этому я и просил уточнить компелятор!
    PS Ты что не понял что вместо "C:\paskal\mywrite\1.txt" нужно указать пусть к файл хосту!
     
    #5880 Сredo, 19 Apr 2010
    Last edited: 19 Apr 2010
Thread Status:
Not open for further replies.