Форум в топку f0gg0t (f0gg0t@gmail.ru) Хакер, номер #088, стр. 088-108-4 Но учти! Флудить – здоровью вредить. Лучше занимайся чем-нибудь более полезным и прибыльным. многопоточность Любой флудер обязательно должен быть многопоточным для достижения максимальной скорости и, соответственно, эффективности. Флудить, пардон, лучше всего топиками, избавиться от них довольно-таки сложно, да и вреда они приносут намного больше, чем сообщения. Как работать с TThread, думаю, объяснять не надо, но все же напомню о том, что синхронизация - вещь не последняя, поэтому при обращении с VCL-компонентами, всегда используй Synchronize. прокси Осталось сказать несколько слов в пользу безопасности. Многие авторы подобных программ ленятся добавить лист прокси или хотя бы одну, ведь ручной бан никто не отменял, резиновые дубины - тоже, поэтому учимся прикручивать прокси. Приделать их особого труда не составляет, всего лишь вместо хоста желаемого сервиса нужно коннектиться к прокси и посылать запрос с данными, предназначенными для нашего форума. Самое сложное - это учесть все возможные ситуации. Начиная от проверки коннекта, кончая проверкой ответа на наличие куков. Не стоит пренебрегать try...except-конструкциями и забывать о том, что connect - все-таки функция, а не процедура. функции распознавания картинки function ChkColorNumber4Ipb2(Color:TColor):boolean; var R,G,B:integer; begin Result:=true; R:=GetRValue(Color); G:=GetGValue(Color); B:=GetBValue(Color); if (R>44) or (G>44) or (B>44) then Result:=false; end; function GetNumber4Ipb2(Imagex:TBitmap):string; const tops: Array[1..6] of Integer = (0,27,54,81,108,135); //Координаты активных зон var bmps:Array[0..9] of TBitmap; //массив эталонов i,x,yy,n,o,p:integer; ibreak,ybreak,pbreak:Boolean; Nums: Array[1..6] of Integer; Cifr: Array[1..6] of Integer; Img:TBitmap; begin yBreak:=false; pBreak:=false; iBreak:=false; n:=0; Img:= TBitmap.Create; Img.Width :=Imagex.Width; Img.Height :=32; //Граница по вертикали for i:=1 to 6 do Nums[i]:=0; for x:=0 to Imagex.Width-4 do begin for yy:=0 to Imagex.Height-4 do begin if ChkColorNumber4Ipb2(Imagex.Canvas.Pixels[x,yy]) then Img.Canvas.Pixels[x-27,yy-16]:=clred; end; end; for i:=0 to 9 do begin //Загружаем 10 эталонов bmps[i]:=TBitmap.Create; bmps[i].LoadFromFile(ExtractFilePath(Application.ExeName)+ 'images/'+IntToStr(i)+'.bmp'); end; for x:=1 to 6 do begin //Проверяем каждый участок if yBreak then begin yBreak:=false; break; end; for i:=0 to 9 do begin //Сверяем с каждым эталоном if iBreak then begin iBreak:=false; break; end; for o:=0 to 11 do begin //Изучаем участок if pBreak then begin pBreak:=false; break; end; for p:=0 to 31 do begin if Img.Canvas.Pixels[tops[x]+o,p-1]=bmps[i].Canvas.Pixels[o,p] then |