注册机
unit Unit1;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Controls, Forms,
Dialogs, StdCtrls, jpeg, ExtCtrls;
type
TForm1 = class(TForm)
Label1: TLabel;
Label2: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Button1: TButton;
Button2: TButton;
Label3: TLabel;
Image1: TImage;
procedure Button2Click(Sender: TObject);
procedure Button1Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
begin
Close;
end;
procedure TForm1.Button1Click(Sender: TObject);
var
H:string[15];//保存机器码
S:string[4];//保存计算过程中间值
T:Cardinal; //临时存放机器码
i:integer;//计数器
n:integer;//计数器
HH:Cardinal;//存放注册码
{H2:Cardinal;//临时
H1:Cardinal;//临时}
label Exit,Error;
begin
if edit1.GetTextLen=0 then
begin
showmessage('请确认您的机器码!');
goto Exit;
end
else begin
H:=edit1.Text;
for i:=1 to length(H) do
if (H[i]<'0') or (H[i]>'9') then
begin
H:='';
goto Error;
end;
end;
//以下将输入的机器码进行计算
T:=strtoint(H);
HH:=T xor 3724244615;
H:=inttostr(HH);
//以下对结果再运算
n:=(integer(H[1])+integer(H[2])) mod 5;
S[1]:=char(n+97);
n:=(integer(H[3])+integer(H[4])) mod 5;
S[2]:=char(n+97);
n:=(integer(H[5])+integer(H[6])) mod 5;
S[3]:=char(n+97);
n:=(integer(H[7])+integer(H[8])+integer(H[9])) mod 5;
S[4]:=char(n+97);
//下面调整生成的注册码,插入7,3,5,9位(9,3,5,10四位)
for i:=11 downto 4 do
H[i]:=H[i-1];
H[3]:=S[4];
for i:=12 downto 6 do
H[i]:=H[i-1];
H[5]:=S[2];
for i:=13 downto 10 do
H[i]:=H[i-1];
H[9]:=S[3];
for i:=14 downto 11 do
H[i]:=H[i-1];
H[10]:=S[1];
edit2.Text:=H+H[11]+H[12]+H[13]+H[14];
goto Exit;
Error:
showmessage('请确认您输入的机器码!');
Exit:
end;
end.
**************************************
以上在WIn2000P3+Delphi7下通过
多说一句,这个注册机可以注册老夫子的一系列软件……
