только начал изучение дельфи нужна функция поиска по определенному сайту. т.е. на сайте есть поиск к примеру http://photoshop.demiart.ru/ там справа функция поиска как эту функция перекинуть на дельфи? чтобы получилось типо: [ это страка поиска ] [кнопка поиск]
1. Смотришь исходный код страницы, находишь форму поиска. 2. Кидаешь на форму в программе Edit и Button 3. при нажатии Button выполнять запрос. + Сниффер в помощь q=текст для поиска +много скрытых полей
ну даже если без них... ошибка в другом((( тот же readtimeout хотя бы должен работать в конструкции try..except... а он выдает ошибку типа время истекло и се... а должен действовать как ошибка и переходить в блок except.... вот это я никак не пойму почему не работает((
Всегда! если как отдельным приложением то такая ошибка: "List index of bounds (3)" и дальше если идти, то всегда ошибку выдает!
Из-за того, что ты запускаешь в режиме отладчика (под средой разработки) вылетает 10060 ошибка, она пропадет как только приложение будет запущено отдельно. насчет List index of bounds (3), проверяй список, возможно кол-во эл.-ов не соотвествует циклу, по идеи ты же удаляешь их из списка, а проходы остаются. Другими словами F7 и смотри где ошибка.
Что за народ то а? Это НЕ ошибка, это ИСКЛЮЧЕНИЕ. А цель его - проинформировать тебя что время истекло. А ты должен, исходя из этого обработать исключение. ЗЫ если ты хочешь отлаживать программу и чтобы сообщений об этом исключении не появлялось - добавь в список игнорируемых исключений. И можешь отлаживать спокойно. Это делается в опциях отладчика.
при работе с антикапчей, есть 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(filename: string; apikey: string; is_phrase: boolean; is_regsense: boolean; is_numeric: boolean; min_len: integer; max_len: integer): string; var ftype,tmpstr,captcha_id: String; i: integer; http: TIdHTTP; multi: Tidmultipartformdatastream; 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; так вот, когда первый раз отсылаю, всё работает, а когда идёт вторая попытка через определённый промежуток времени, выдаёт ошибку файл не может быть перезаписан т.к. он используется.... что делать?
PHP: function recognize(filename: string; apikey: string; is_phrase: boolean; is_regsense: boolean; is_numeric: boolean; min_len: integer; max_len: integer): string; var ftype,tmpstr,captcha_id: String; i: integer; http: TIdHTTP; multi: Tidmultipartformdatastream; 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 замени на эту
как узнать вес html страницы через indy ? или как сделатьв условии, чтобы проверялось на пустой ответ или пустую страницу?(весит 0кб)
3n0t, я бы так сделал PHP: s:=idHTTP.Get(link); if s<>'' then ........ else .......... Хотя может можно как то по другому ))
ну и зря, в любом случае ты получишь хеддеры от сервера (если компьютер конечно же подкл. к сети) (если же не подкл. -> программа высветит ошибку окном (в данном случае (т.е. то что в этих скобках) спасает только try...except))
var s : string; size : integer; ............... s := IdHttp.Get(URL); size := Length(s)*SizeOf(Char);
Необходимо тут написать прожку, определяющую подключение юсб-девайса к компу. Открыл гугль, поискал, нашел вот это: http://www.programmersforum.ru/showthread.php?t=10295 (см 4й пост) Сделал соотв модуль, поисправлял ошибки, скомпилил. Так вот, как теперь этой штукой пользоваться? Мне нужно, чтобы в переменной лежало значение, подключено или нет. Ну, или в ином легкодоступном месте.
Хоть бы сказал на каком языке тебе надо!Вот пример,но рекомендую использовать относительный пусть,найди папку 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;
Полный бред?отвечаешь за слова?Если не понимаешь в программирование то не суй нос,а во вторых синтаксис паскаля и делфи слегка отличается,по этому я и просил уточнить компелятор! PS Ты что не понял что вместо "C:\paskal\mywrite\1.txt" нужно указать пусть к файл хосту!