📄 ulogin.~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 + -