📄 login.pas
字号:
unit Login;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons;
type
TfrmLogin = class(TForm)
Label1: TLabel;
Label2: TLabel;
edtUserID: TEdit;
edtPassword: TEdit;
btnOK: TButton;
brnCancel: TButton;
procedure brnCancelClick(Sender: TObject);
procedure btnOKClick(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
end;
//定义合法用户数组,用户的输入应当在数组指定的范围内
const UserArr: array[1..3] of Integer = (666, 777,888);
//定义合法用户的密码
const PasswordArr: array[1..3] of string = ('666', '777', '888');
type
//自定义异常类定义
EInValidation = class(Exception)
public
ErrorCode: Integer;
constructor Create(Const Msg: String;ErrorNum: Integer);
end;
{错误密码时的自定义异常类}
EInValidPassword = class(EInValidation)
public
constructor Create;
end;
{错误用户ID时的自定义异常类
错误码ErrorNum含义如下:
0:用户ID为0
-1:用户ID为空
1:不能转化为用户ID
2:用户ID超过范围
3:用户ID不正确
}
EInValidUserID = class(EInValidation)
public
constructor Create(ErrorNum: Integer);
end;
var
frmLogin: TfrmLogin;
implementation
{$R *.dfm}
procedure TfrmLogin.brnCancelClick(Sender: TObject);
begin
ModalResult := mrCancel;
end;
{ EInValidation }
constructor EInValidation.Create(const Msg: String; ErrorNum: Integer);
begin
inherited Create(Msg);
ErrorCode := ErrorNum;
end;
{ EInValidPassword }
constructor EInValidPassword.Create;
begin
inherited Create('无效的用户密码',0);
end;
{ EInValidUserID }
constructor EInValidUserID.Create(ErrorNum: Integer);
var
Msg: String;
begin
case ErrorNum of
-1: Msg := '用户ID为空';
0: Msg := '用户ID为0';
1: Msg := '不能转化为用户ID';
2: Msg := '用户ID超过范围';
3: Msg := '用户ID不正确';
else
Msg := '无效的输入';
end;
inherited Create(Msg,ErrorNum);
end;
procedure TfrmLogin.btnOKClick(Sender: TObject);
var i:integer;
UserID:Integer;
begin
if edtUserID.Text = '' then
Raise EInvalidUserID.Create(-1)
else
try
UserID := StrToInt(edtUserID.Text);
except
on EConvertError do
begin
Raise EInvalidUserID.Create(1);
end;
else
Raise EInvalidUserID.Create(100);
end;
if Length(edtUserID.Text) > 8 then
Raise EInvalidUserID.Create(2);
//查找输入的用户ID
for i := low(UserArr) to High(UserArr) do
if UserArr[i] = UserID then
Break;
//如果未找到输入的用户ID
if i > High(UserArr) then
Raise EInvalidUserID.Create(3);
//判断密码输入是否正确
if PasswordArr[i] <> edtPassword.Text then
Raise EInvalidPassWord.Create;
ModalResult := mrOK;
Hide;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -