📄 mainunit.pas
字号:
unit MainUnit;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, Buttons, StdCtrls,IniFiles, ExtCtrls,md5;
type
TFrmPassAdmin = class(TForm)
RadioGroup5: TRadioGroup;
Label8: TLabel;
Label9: TLabel;
Label10: TLabel;
EdtOldPass: TEdit;
EdtNewPass1: TEdit;
EdtNewPass2: TEdit;
Label11: TLabel;
BtnModiPass: TSpeedButton;
BtnClose: TSpeedButton;
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure BtnModiPassClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure BtnCloseClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
function GetPassword(nType:byte):String; stdcall;
procedure Writepassword(nType:byte;Password:String); stdcall;
function IsAdminiStationPassWord(Password:String):boolean; stdcall;
function ConfirmPassWord(nType:byte;Password:String):boolean; stdcall;
function Encrypt_MD5(Source:PChar;Length:Integer):PChar;stdcall;
var
DllApplication: TApplication;
gStrAppPath:String;
implementation
{$R *.dfm}
//------------------------------------------------------------------------------
//功能:从配置文件中读出指定人员的密码
//参数: ntype 人员类型 0 超级管理员,1 数据库修改,2地址修改
// 超级管理员可以修改任何人的密码 地址和数据库
//返回值:指定人员的密码,初始时密码为空,则表示用默认的密码
function GetPassword(nType:byte):String; stdcall;
var
mIni:TIniFile;
StrIdent:String;
begin
gStrAppPath :=ExtractFilePath(Application.ExeName);
try
mIni:=TIniFile.Create(gStrAppPath+'PassAdmin.ini');
StrIdent:='Pass'+IntToStr(nType);
Result:=mIni.ReadString('PassWord',StrIdent,'');
finally
mIni.Free ;
end;
end;
//------------------------------------------------------------------------------
//功能:将指定人员的密码加密后写入配置文件中
//参数: ntype 人员类型 0 超级管理员,1 数据库修改,2地址修改
// 超级管理员可以修改任何人的密码 地址和数据库
// Password 密码
//返回值:无
procedure Writepassword(nType:byte;Password:String); stdcall;
var
mIni:TIniFile;
StrIdent:String;
StrMD5Pass:String;
begin
gStrAppPath :=ExtractFilePath(Application.ExeName);
try
mIni:=TIniFile.Create(gStrAppPath+'PassAdmin.ini');
StrIdent:='Pass'+IntToStr(nType);
StrMD5Pass:=MD5Print(MD5String(Password));
mIni.WriteString('PassWord',StrIdent,StrMD5Pass);
finally
mIni.Free ;
end;
end;
//功能:验证指定密码是不是超级管理员的
//参数:
// Password 待验证的密码
//返回值:正确返回true,否则返回false
function IsAdminiStationPassWord(Password:String):boolean; stdcall;
var
mIni:TIniFile;
StrConfirm:String;
StrReadPass:String;
begin
gStrAppPath :=ExtractFilePath(Application.ExeName);
try
mIni:=TIniFile.Create(gStrAppPath+'PassAdmin.ini');
StrReadPass:=mIni.ReadString(gStrAppPath+'PassWord','Pass0','');
if StrReadPass='' then
begin
Result:=AnsiSameStr(Password,'8907400willsun');
end
else
begin
StrConfirm:= MD5Print(MD5String(Password));
Result:=AnsiSameStr(StrConfirm,StrReadPass);
end;
finally
mIni.Free ;
end;
end;
//功能:验证指定人员的密码
//参数: ntype 人员类型 0 超级管理员,1 数据库修改,2地址修改
// 超级管理员可以修改任何人的密码 地址和数据库
// Password 待验证的密码
//返回值:正确返回true,否则返回false
function ConfirmPassWord(nType:byte;Password:String):boolean; stdcall;
var
mIni:TIniFile;
StrIdent:String;
StrConfirm:String;
StrReadPass:String;
begin
gStrAppPath :=ExtractFilePath(Application.ExeName);
try
mIni:=TIniFile.Create(gStrAppPath+'PassAdmin.ini');
StrIdent:='Pass'+IntToStr(nType);
StrReadPass:=mIni.ReadString('PassWord',StrIdent,'');
if StrReadPass='' then
begin
case nType of
0:Result:=AnsiSameStr(Password,'8907400willsun');
1:Result:=AnsiSameStr(Password,'123456');
2:Result:=AnsiSameStr(Password,'willsun');
end;
end
else
begin
StrConfirm:= MD5Print(MD5String(Password));
Result:=AnsiSameStr(StrConfirm,StrReadPass);
end;
finally
mIni.Free ;
end;
end;
function Encrypt_MD5(Source:PChar;Length:Integer):PChar;stdcall;
var
Str:String;
begin
Str:=Copy(Source,1,Length);
Str:= MD5Print(MD5String(Str));
Result:=PChar(Str);
end;
procedure TFrmPassAdmin.FormClose(Sender: TObject;
var Action: TCloseAction);
begin
Action:=caFree;
end;
procedure TFrmPassAdmin.BtnModiPassClick(Sender: TObject);
var
StrPass1,StrPass2,StrOldPass:String;
bIsAdmin:boolean;
begin
StrOldPass:=Trim(EdtOldPass.Text);
StrPass1:=Trim(EdtNewPass1.Text);
StrPass2:=Trim(EdtNewPass2.Text);
BtnModiPass.Enabled := false;
bIsAdmin:= IsAdminiStationPassWord(StrOldPass);
if not bIsAdmin then
begin
if not ConfirmPassWord(RadioGroup5.ItemIndex,StrOldPass) then
begin
EdtOldPass.SetFocus ;
Messagedlg('旧密码不正确,请重新输入',mtConfirmation,[mbOk],0);
BtnModiPass.Enabled := true;
exit;
end;
end;
if not AnsiSameStr(StrPass1,StrPass2) then
begin
Messagedlg('两次密码输入不一致,请重新输入',mtConfirmation,[mbOk],0);
BtnModiPass.Enabled := true;
exit;
end;
if Length(StrPass1)<4 then
begin
Messagedlg('密码长度必须大于4',mtConfirmation,[mbOk],0);
BtnModiPass.Enabled := true;
exit;
end;
Writepassword(RadioGroup5.ItemIndex,StrPass1);
Messagedlg('密码修改成功,请记住密码',mtConfirmation,[mbOk],0);
BtnModiPass.Enabled := true;
Close;
end;
procedure TFrmPassAdmin.FormCreate(Sender: TObject);
begin
gStrAppPath :=ExtractFilePath(Application.ExeName);
end;
procedure TFrmPassAdmin.BtnCloseClick(Sender: TObject);
begin
Close;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -