Форум: "Начинающим";
Текущий архив: 2009.05.31;
Скачать: [xml.tar.bz2];
ВнизФайл занят другим процессом. Найти похожие ветки
← →
HF-Trade (2009-04-19 14:45) [0]Помогие мне а?=)
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://anti-captcha.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://anti-captcha.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;
procedure TForm1.Button1Click(Sender: TObject);
var
tmpParams:TStringList;
Captcha:TMemoryStream;
...........
...........
begin
rsltedit.Text:="recognizing...";
tmpList.Clear;
Button1.Enabled:=false;
tmpParams:=TStringList.Create;
tmpParams.Add("login="+Login);
tmpParams.Add("firstname="+FistName);
tmpParams.Add("lastname="+LastName);
tmpList.Items.Text:=IdHTTP1.Post(урл,tmpParams);
tmpParams.Add(еще параметры);
Captcha:= TMemoryStream.Create;
idHTTP1.Get("урл",Captcha);
Captcha.SaveToFile(MyDir+"image.jpg");
Captcha.Destroy;
token:=recognize(MyDir+"image.jpg",apikeyedit.Text,false,false,false,0,0);
mpParams.Add("kapcha"+Token);
tmpList.Items.Text:=IdHTTP1.Post("урл",tmpParams);
tmpList.Items.SaveToFile(MyDir+"tpm.htm");
tmpParams.Free;
Button1.Enabled:=true;
end;
Первый раз все норм, на второй, вот тут ошибка- говорит что файл занят -
idHTTP1.Get("урл",Captcha);
Captcha.SaveToFile(MyDir+"image.jpg");
^^^^^^^^^^^^
← →
Palladin © (2009-04-19 14:49) [1]безобразный код... уволен.
а multi нужно все таки освободить. Пушкина на всех не хватит.
← →
HF-Trade (2009-04-19 14:51) [2]пробовал я и multi.free нифига...
← →
HF-Trade (2009-04-19 14:53) [3]
> безобразный код... уволен.
Функция взята как есть с сайта антикапчи....
← →
HF-Trade (2009-04-19 14:57) [4]вопрос снят))
Не везде free вставил))))
← →
Anatoly Podgoretsky © (2009-04-19 17:53) [5]> Palladin (19.04.2009 14:49:01) [1]
До увольнения.
Страницы: 1 вся ветка
Форум: "Начинающим";
Текущий архив: 2009.05.31;
Скачать: [xml.tar.bz2];
Память: 0.46 MB
Время: 0.005 c