
20.02.2011, 18:28
|
 |
Продвинутый
|
|
Регистрация: 07.09.2010
Сообщения: 726
Репутация: 26711
|
|
Код не мой. Взял с какого-то сайта, уже не помню где
Код:
type
TForm1 = class(TForm)
Image1: TImage;
Button1: TButton;
EditCaptcha: TEdit;
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
procedure Captcha_(Code: Integer);
procedure SetCaptcha_;
function TestCaptcha(C: String): Boolean;
end;
var
Form1: TForm1;
CurCod: Integer;
implementation
{$R *.dfm}
procedure TForm1.Captcha_(Code: Integer);
const
lines = 6;
var
x,y,g : integer;
str : string;
begin
Image1.Canvas.Brush.Color := clWhite;
Image1.Canvas.Brush.Style := bsSolid;
Image1.Canvas.FillRect(Image1.Canvas.ClipRect);
if (Code < 99999) or (Code > 1000000) then
Image1.Canvas.TextOut(4,4,'INVALID CODE');
for x := 0 to Image1.Width - 1 do
for y := 0 to Image1.Height - 1 do
if Random(1000) mod 2 = 0 then begin
g := Random(100)+100;
Image1.Canvas.Pixels[x,y] := rgb(g,g,g);
end;
Image1.Canvas.Brush.Style := bsClear;
for x := 1 to 6 do begin
g := Random(100)+100;
case Random(3) of
0 : Image1.Canvas.Font.Color := rgb(g,0,0);
1 : Image1.Canvas.Font.Color := rgb(0,g,0);
2 : Image1.Canvas.Font.Color := rgb(0,0,g);
end;
case random(2) of
0 : Image1.Canvas.Font.Style := [fsBold];
1 : Image1.Canvas.Font.Style := [];
end;
Image1.Canvas.Font.Size := 15 + Random(6);
Image1.Canvas.TextOut((x-1)*15+10, random(image1.Height-Image1.Canvas.TextHeight('1')), IntToStr(Code)[x]);
end;
Image1.Canvas.Pen.Color := clBlack;
for x := 0 to lines - 1 do begin
Image1.Canvas.MoveTo(0, Random(Image1.Height));
Image1.Canvas.LineTo(Image1.Width, Random(Image1.Height));
end;
end;
procedure TForm1.SetCaptcha_;
begin
Randomize;
CurCod := Random(899999) + 100000;
Captcha_(CurCod);
end;
function TForm1.TestCaptcha(C: String): Boolean;
begin
Result := IntToStr(CurCod) = C;
end;
procedure TForm1.Button1Click(Sender: TObject);
begin
if(not(TestCaptcha(EditCaptcha.Text))) then begin
ShowMessage('Капча не верна');
EditCaptcha.Clear;
SetCaptcha_;
Exit;
end;
end;
procedure TForm1.FormShow(Sender: TObject);
begin
SetCaptcha_;
end;
__________________
Помогаю за Спасибо
|