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

📄 card_changepsw.pas

📁 亚惠快餐管理信息系统 包括亚惠快餐管理的各项功能
💻 PAS
字号:
unit Card_ChangePsw;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, StdCtrls, Mask, Buttons, IniFiles;

type
  TFrmCard_ChangePsw = class(TForm)
    GroupBox1: TGroupBox;
    Label1: TLabel;
    MaskEdit1: TMaskEdit;
    Label2: TLabel;
    MaskEdit2: TMaskEdit;
    Label3: TLabel;
    MaskEdit3: TMaskEdit;
    BitBtn1: TBitBtn;
    BitBtn2: TBitBtn;
    GroupBox2: TGroupBox;
    Label4: TLabel;
    RadioButton1: TRadioButton;
    RadioButton2: TRadioButton;
    procedure BitBtn1Click(Sender: TObject);
    procedure BitBtn2Click(Sender: TObject);
    procedure MaskEdit1KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MaskEdit2KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    procedure MaskEdit3KeyUp(Sender: TObject; var Key: Word;
      Shift: TShiftState);
  private
    { Private declarations }
  public
    { Public declarations }
    function IfNull: Boolean;
    procedure GetComh(var comh: smallint);
    function Change(comh: smallint): Boolean;
    procedure WriteToini;
    function ChangePassWord(Comh: smallint; OldPSW: PChar; NewPSW: PChar):
      smallint;
    function ReadFromDll(filelx: string; comh: smallint; passwordz: PChar):
      smallint;
  end;
procedure SetWork;
implementation
uses PublicUnit;

{$R *.dfm}

procedure SetWork;
var
  FrmCard_ChangePsw: TFrmCard_ChangePsw;
begin
  Screen.Cursor := CrHourGlass;
  Application.CreateForm(TFrmCard_ChangePsw, FrmCard_ChangePsw);
  FrmCard_ChangePsw.ShowModal;
  FrmCard_ChangePsw.Free;
  Screen.Cursor := CrDefault;
end;

procedure TFrmCard_ChangePsw.BitBtn1Click(Sender: TObject);
var
  comh, returnvalue: smallint;
begin
  if not IfNull then
    Exit;
  GetComh(comh);
  if Change(comh) then
    ShowMessage('密码修改成功!');
  if MessageBox(handle, '修改下一张卡片的密码吗?', '提示', MB_YesNo) = ID_No
    then
    Exit;
  SetWork;
end;

function TFrmCard_ChangePsw.IfNull: Boolean;
begin
  Result := False;
  if MaskEdit1.Text = '' then
  begin
    ShowMessage('请输入原密码!');
    MaskEdit1.SetFocus;
    Exit;
  end;
  if MaskEdit2.Text = '' then
  begin
    ShowMessage('请输入新密码!');
    MaskEdit2.SetFocus;
    Exit;
  end;
  if MaskEdit3.Text = '' then
  begin
    ShowMessage('请再输入一次新密码!');
    MaskEdit3.SetFocus;
    Exit;
  end;
  if Trim(MaskEdit3.Text) <> Trim(MaskEdit2.Text) then
  begin
    ShowMessage('请重新输入新密码!');
    MaskEdit3.SetFocus;
    Exit;
  end;
  Result := True;
end;

procedure TFrmCard_ChangePsw.GetComh(var comh: smallint);
begin
  if RadioButton1.Checked then
    comh := 0
  else if RadioButton2.Checked then
    comh := 1;
end;

function TFrmCard_ChangePsw.Change(comh: smallint): Boolean;
var
  returnvalue: smallint;
  aa, aa1: string;
begin
  Result := False;
  aa := Trim(MaskEdit1.Text);
  aa1 := Trim(MaskEdit2.Text);
  returnvalue := ReadFromDll('checkpass', comh, PChar(aa));
  if returnvalue <> 1 then
  begin
    ShowMessage('原密码错误,请重新输入!');
    MaskEdit1.Text := '';
    MaskEdit1.SetFocus;
    Exit;
  end;
  if RadioButton1.Checked then
    comh := 0
  else
    comh := 1;
  returnvalue := ChangePassWord(comh, Pchar(aa), Pchar(aa1));
  if returnvalue <> 1 then
  begin
    ShowMessage('密码修改失败,请重新输入!');
    MaskEdit1.Text := '';
    MaskEdit2.Text := '';
    MaskEdit3.Text := '';
    MaskEdit1.SetFocus;
    Exit;
  end;
  WriteToIni;
  Result := True;
end;
//修改密码

function TFrmCard_ChangePsw.ChangePassWord(Comh: smallint; OldPSW: PChar;
  NewPSW: PChar): smallint;
type
  TDllFunc = function(com: smallint; password: PChar; newpass: PChar): smallint;
  stdcall;
var
  alib: THandle;
  proc: TDllFunc;
  FileName: string;
begin
  FileName := ExtractFilePath(Application.ExeName) + 'iccardp.dll';
  try
    alib := LoadLibrary(PChar(FileName));
  except
    proc := nil;
    FreeLibrary(alib);
    Screen.Cursor := crDefault;
    ShowMessage('未能成功调用ic卡机的函数iccardp.dll!');
    Exit;
  end;
  if alib = 0 then
  begin
    Screen.Cursor := crDefault;
    ShowMessage('无法访问ic卡机的函数iccardp.dll!');
    Exit;
  end;
  Proc := TDllFunc(GetProcAddress(alib, PChar('changepass')));
  if @Proc = nil then
  begin
    Screen.Cursor := crDefault;
    ShowMessage('无法访问ic卡机修改密码函数!');
    Exit;
  end;
  Result := Proc(Comh, OldPSW, NewPSW);
end;
// 校验密码

function TFrmCard_ChangePsw.ReadFromDll(filelx: string; comh: smallint;
  passwordz: PChar): smallint;
type
  TDllFunc = function(com: integer; password: pchar): smallint; stdcall;
var
  alib: THandle;
  proc: TDllFunc;
  FileName: string;
begin
  FileName := ExtractFilePath(Application.ExeName) + 'iccardp.dll';
  try
    alib := LoadLibrary(PChar(FileName));
  except
    proc := nil;
    FreeLibrary(alib);
    Screen.Cursor := crDefault;
    ShowMessage('未能成功调用ic卡机的函数iccardp.dll!');
    Exit;
  end;
  if alib = 0 then
  begin
    Screen.Cursor := crDefault;
    ShowMessage('无法访问ic卡机的函数iccardp.dll!');
    Exit;
  end;
  Proc := TDllFunc(GetProcAddress(alib, PChar(filelx)));
  if @Proc = nil then
  begin
    Screen.Cursor := crDefault;
    ShowMessage('无法访问ic卡机读取数据函数!');
    Exit;
  end;
  Result := Proc(comh, passwordz);
end;

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

procedure TFrmCard_ChangePsw.WriteToini;
var
  ti: TInifile;
  Comh: integer;
begin
  ti := TIniFile.Create(ExtractFilePath(Application.ExeName) + 'System.ini');
  ti.WriteString('默认选项', 'Mima', EncryFunc(Trim(MaskEdit2.Text)));
  if RadioButton1.Checked then
    Comh := 0
  else
    Comh := 1;
  ti.WriteInteger('默认选项', 'Port', Comh);
  ti.Free;
end;

procedure TFrmCard_ChangePsw.MaskEdit1KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
    MaskEdit2.SetFocus;
end;

procedure TFrmCard_ChangePsw.MaskEdit2KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
    MaskEdit3.SetFocus;
end;

procedure TFrmCard_ChangePsw.MaskEdit3KeyUp(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
  if Key = 13 then
    BitBtn1Click(Self);
end;

end.

⌨️ 快捷键说明

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