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

📄 login.pas

📁 Delphi7数据库开发教程,包含该书21套实例
💻 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 + -