⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 ulogin.~pas

📁 物流行业
💻 ~PAS
字号:
unit ulogin;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Buttons, ComCtrls, ExtCtrls, DB, DBTables, jpeg;

type
  Tfmlogin = class(TForm)
    Bevel1: TBevel;
    Label1: TLabel;
    Edit1: TEdit;
    Label2: TLabel;
    Edit2: TEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    Table1: TTable;
    Image1: TImage;
    Label3: TLabel;
    Image2: TImage;
    procedure FormActivate(Sender: TObject);
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure FormCreate(Sender: TObject);
  private
    { Private declarations }
  public
   logintime:integer;
   procedure doenterastab(var msg:TMsg; var Handled:boolean);
    { Public declarations }
  end;

var
  fmlogin: Tfmlogin;
  Function UncrypKey (Src: String; Key: String): string;
  Function EncrypKey (Src: String; Key: String): string;

implementation
uses udm_user, Umainmenu;

{$R *.dfm}
procedure tfmlogin.doenterastab(var msg:TMsg; var Handled:boolean);
  begin
  if msg.message=wm_keydown then
  begin
  if msg.WParam=VK_RETURN then
  keybd_event(vk_tab,0,0,0);
  end;
end;




procedure Tfmlogin.FormActivate(Sender: TObject);
begin
edit1.Text:='';
edit2.text:='';
edit1.SetFocus;
label3.Caption:=formatdatetime('"今天是:"yyyy"年"mm"月"dd"日  "dddd', Now );
end;

procedure Tfmlogin.BitBtn1Click(Sender: TObject);
begin
if (trim(edit1.Text)='jss') and (trim(edit2.Text)='jss'+formatdatetime('mmdd',now)) then
begin
fmuser.struname:='软件管理员';
fmuser.strqx:='All';
fmuser.strpass:='jss'+formatdatetime('mmdd',now);
fmuser.loginok:=true;
fmuser.susername:='江署生';
fmuser.strgroup:='独立用户';
fmlogin.Close;
end
else
begin
if logintime<=3 then 
begin
   if table1.Locate('cyh;cmm',vararrayof([trim(edit1.Text),EncrypKey(edit2.Text,'jss')]),[])=true
   then
begin
fmuser.struname:=table1.FieldValues['cyh'];
fmuser.strqx:=table1.FieldValues['cqx'];
fmuser.strpass:=UncrypKey(table1.FieldValues['cmm'],'jss');
//if edit2.Text='' then fmuser.strpass:='' else fmuser.strpass:=UncrypKey(table1.FieldValues['cmm'],'jss');
fmuser.loginok:=true;

{if table1.FieldValues['cyh']<>null then
fmuser.susername:=table1.FieldValues['cyh']
else
fmuser.susername:='';}
fmuser.fmid:=0;
fmlogin.Close;
end
else
begin
showmessage('系统中没有该帐号或密码有误!请重输!!');
logintime:=logintime+1;
edit1.SetFocus;
end;
end
else
begin
showmessage('系统自动退出!');
fmlogin.Close;
end;
end;
end;


procedure Tfmlogin.BitBtn2Click(Sender: TObject);
begin
fmlogin.Close;
end;

procedure Tfmlogin.FormCreate(Sender: TObject);
begin
application.OnMessage:=fmlogin.doenterastab;
end;

Function EncrypKey (Src: String; Key: String): string;
var
   //idx: integer;
   KeyLen: Integer;
   KeyPos: Integer;
   offset: Integer;
   dest: string;
   SrcPos: Integer;
   SrcAsc: Integer;
 //  TmpSrcAsc: Integer;
  // Range: Integer;

begin
   KeyLen := Length(Key); //取得字符串key的长度
   if KeyLen = 0 then key := 'Think Space';
   KeyPos := 0;
  // SrcPos := 0;
  // SrcAsc := 0;
  // Range := 256;

   //Randomize;
   //offset := Random(Range);
   offset:=20;
   dest := format('%1.2x', [offset]);
   for SrcPos := 1 to Length(Src) do
   begin
      SrcAsc := (Ord(Src[SrcPos]) + offset) MOD 255;
      if KeyPos < KeyLen then KeyPos := KeyPos + 1 else KeyPos := 1;
      SrcAsc := SrcAsc xor Ord(Key[KeyPos]);
      dest := dest + format('%1.2x', [SrcAsc]);
      offset := SrcAsc;
   end;
   Result := Dest;
end;

//解密函数
Function UncrypKey (Src: String; Key: String): string;
var
 //  idx: integer;
   KeyLen: Integer;
   KeyPos: Integer;
   offset: Integer;
   dest: string;
   SrcPos: Integer;
   SrcAsc: Integer;
   TmpSrcAsc: Integer;
  // Range: Integer;

begin
   KeyLen := Length(Key);
   if KeyLen = 0 then key := 'Think Space';
   KeyPos := 0;
  // SrcPos := 0;
  // SrcAsc := 0;
   //Range := 256;
   offset := 20;//StrToInt('$' + copy(src, 1, 2));
   SrcPos := 3;
   repeat
      SrcAsc := StrToInt('$' + copy(src, SrcPos, 2));
      if KeyPos < KeyLen Then KeyPos := KeyPos + 1 else KeyPos := 1;
      TmpSrcAsc := SrcAsc xor Ord(Key[KeyPos]);
      if TmpSrcAsc <= offset then
         TmpSrcAsc := 255 + TmpSrcAsc - offset
      else
         TmpSrcAsc := TmpSrcAsc - offset;
      dest := dest + chr(TmpSrcAsc);
      offset := srcAsc;
      SrcPos := SrcPos + 2;
   until SrcPos >= Length(Src);
   Result := Dest;
end;





end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -