欢迎来到 嗅灵易学

零基础也能上手的脚本技术课,一对一答疑带你入门

顺便把源代码也放上来:

顺便把源代码也放上来:


顺便把源代码也放上来:
unit main;
interface
uses
  Windows, Messages, SysUtils, Classes, Graphics, Controls, Forms, Dialogs,
  SUISkinEngine, CnWaterImage, EffectUtils, AnimationEffect, jpeg, StdCtrls,
  Buttons, CheckLst;
type
  TForm1 = class(TForm)
    Skin: TsuiSkinEngine;
    Effect: TAnimationEffect;
    Image: TCnWaterImage;
    GroupBox1: TGroupBox;
    BitBtnReg: TBitBtn;
    Memo: TMemo;
    GroupBox2: TGroupBox;
    EditName: TEdit;
    EditCode: TEdit;
    BitBtnExit: TBitBtn;
    LabelName: TLabel;
    LabelCode: TLabel;
    LabelWeb: TLabel;
    ComboBox: TComboBox;
    LabelKey: TLabel;
    procedure BitBtnExitClick(Sender: TObject);
    procedure BitBtnRegClick(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
    { Public declarations }
  end;
var
  Form1: TForm1;
implementation

uses Music;           //使用 XMobj 播放xm背景音乐
{$I XMobj\ufmod.inc *** uFMOD API: WINMM version}
{$R *.DFM}
var
  RegName,RegCode : string;
//******  注册名 -> 注册码    换算函数  ******
//RegName为读入的注册名; RegCode为读入的注册码
function KeyGen(RegName: string): string;
var
  cz : integer;
//  textP, textCZ:string; //textCZ,textP,posP 都
//  i, posP:integer;      //为解密字符串所以变量
begin
  cz := ord(RegName[1])*ord(RegName[7])+
        ord(RegName[2])*ord(RegName[6])+
        ord(RegName[3])*ord(RegName[5]);
  cz := cz*cz xor ord(RegName[4]);
  if length(intTostr(cz))>6
  then Result := copy(intTostr(cz),1,7)
  else begin
         repeat
           cz := cz*cz;
         until length(intTostr(cz))>6;
         Result := copy(intTostr(cz),1,7);
       end;
//showmessage(Result);
{
//将 "\|]^K~_`?a??M???f?h?i??P???n??R???s??T"  解密
//为 "AaBC0cDdEe1FfGgH2hIiJj3KkLMm4NnOoP5pQqRr6SsTtU7uVvWw8XxYyZ9z"
  textP := '\|]^K~_`?a??M???f?h?i??P???n??R???s??T';
  for posP := 1 to length(textP) do
    textP[posP] := chr(ord(textP[posP]) - 27);   //'27'为解密的钥匙,重要
  for i:=1 to Length(RegName) do                 //RegName为读取的注册名
    Result:=Result + textP[( ( Ord(RegName[i]) + 7904 ) mod 27 ) + 1];
}
end;
procedure TForm1.BitBtnRegClick(Sender: TObject);
label
  cz1,cz2,cz3;
begin
  if (length(EditName.Text) > 6)  //注册名长度大于6 (必须为7位数)
  then begin
         RegName := EditName.Text;//注册名
         if (EditCode.Text <> '') //注册码不为空的话(必然为9位数)
         then begin
                RegCode := EditCode.Text;//注册码
                if (ComboBox.Text <> '')
                then begin        //数值为:   7-2=5  //因为注册名长度小于8(为7位数)
                       if (length(EditName.Text)-ComboBox.ItemIndex)<6
                       then begin
                              if (Pos('79',EditCode.Text)>0)//尾数包含有'注册名+注册码'长度的字符
                              then begin
                                     if (KeyGen(RegName)+
                                         intTostr(length(EditName.Text))+
                                         intTostr(length(EditCode.Text)))
                                         <> RegCode
                                     then goto cz1        //注册失败
                                     else begin           //数值为:7-2=5 //因为注册名长度小于8(为7位数)
                                            if (length(EditName.Text)-ComboBox.ItemIndex)>4
                                            then goto cz2 //注册成功
                                            else goto cz1;//注册失败
                                          end;  
                                   end
                              else goto cz1;              //注册失败
                            end
                       else begin
                            cz1:
                              messageDlg(' Wrong Code!' +#13+#13+ 'Try It Again!',mtError,[mbOK],0);
                              exit;
                            cz2:          //注册名长度小于8 (必须为7位数)
                              if (length(EditName.Text) < 8) and (ComboBox.ItemIndex = 2)
                              then messageDlg('!Good Job!     ' + 'Registered To: '+RegName +'     !Good Job!' +#13+#13+
                                              'You really should congratulate yourself on this job!',
                                              mtInformation,[mbOK],0)
                              else goto cz1;
                              exit;
                            cz3:
                              exit;
                            end;
                     end
                else begin
                       ShowMessage('Select Your Key');
                       goto cz3;
                     end;
              end
         else begin
                EditCode.Text := InputBox('Need Your Code!','Please Input Your Code Here:','');
                //showmessage('input ur code');
                goto cz3;
              end;
       end
  else begin
         EditName.Text := InputBox('Your Name Is Too Short!','Need More Than 6 Character:','');
         //showmessage('input ur name');
         goto cz3;
       end;
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
  { Start playXMbackMusic }          // 开始 播放背景音乐
  uFMOD_PlaySong(@xm,Length(xm),XM_MEMORY);
  { Stop  playXMbackMusic }          // 停止 播放背景音乐
//uFMOD_StopSong;
end;
procedure TForm1.BitBtnExitClick(Sender: TObject);
begin
  form1.close;
end;
end.

注意:上传附件及图片大小不得大于30M。

⚠️ 版权声明:
本博客所有内容(含教程、源码、工具)仅供个人技术学习与研究交流使用,严禁商用、倒卖、二次分发及非法用途
未经作者书面授权,任何组织或个人不得转载、复制或用于其他平台,违者将追究相关责任。

0 0 0 举报
复制成功