unit DBs1OtpMain; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.StdCtrls, Vcl.Buttons, Tocsg.Controls; type TDlgBs1OtpMain = class(TForm) Label1: TLabel; Label2: TLabel; Label3: TLabel; Label4: TLabel; Label5: TLabel; edEmpNo: TEdit; edGenCode: TEdit; edSetCode: TEdit; edEncBase64: TEdit; edEncBinHex: TEdit; btnGetCode: TSpeedButton; Label6: TLabel; Label7: TLabel; edResult1: TEdit; edResult2: TEdit; btnGetAuth: TButton; procedure btnGetCodeClick(Sender: TObject); procedure btnGetAuthClick(Sender: TObject); private { Private declarations } MgCtrls_: TManagerInputControlsData; public { Public declarations } Constructor Create(aOwner: TComponent); override; Destructor Destroy; override; end; var DlgBs1OtpMain: TDlgBs1OtpMain; implementation uses Tocsg.Path, System.Math, CrmLogger, Tocsg.Strings; {$R *.dfm} Constructor TDlgBs1OtpMain.Create(aOwner: TComponent); begin Inherited Create(aOwner); MgCtrls_ := TManagerInputControlsData.Create(CutFileExt(GetRunExePath) + '.ini'); MgCtrls_.RegInputCtrl(edEmpNo); MgCtrls_.Load; end; Destructor TDlgBs1OtpMain.Destroy; begin FreeAndNil(MgCtrls_); Inherited; end; procedure TDlgBs1OtpMain.btnGetAuthClick(Sender: TObject); var sTemp, sCode: String; i: Integer; dtNow: TDateTime; begin edEmpNo.Text := Trim(edEmpNo.Text); if edEmpNo.Text = '' then begin MessageBox(Handle, PChar('»ç¹øÀ» ÀÔ·ÂÇØ ÁֽʽÿÀ.'), PChar(Caption), MB_ICONWARNING or MB_OK); edEmpNo.SetFocus; exit; end; MgCtrls_.Save; sCode := Trim(edGenCode.Text); if sCode = '' then begin MessageBox(Handle, PChar('Äڵ带 »ý¼ºÇØ ÁֽʽÿÀ.'), PChar(Caption), MB_ICONWARNING or MB_OK); edGenCode.SetFocus; exit; end; dtNow := Now; sTemp := FormatDateTime('yy', dtNow); sTemp := sTemp[Length(sTemp)]; sTemp := sTemp + FormatDateTime('mmdd', dtNow); sCode := sCode + sTemp + sTemp; edSetCode.Text := sCode; edEncBase64.Text := EncryptStrToBase64(edSetCode.Text, edEmpNo.Text); edEncBinHex.Text := EncryptStrToBinStr(edSetCode.Text, edEmpNo.Text); edResult1.Text := Copy(edEncBinHex.Text, 1, 6); sCode := ExtrNumStr(edEncBinHex.Text); if sCode.Length > 6 then SetLength(sCode, 6); edResult2.Text := sCode; end; procedure TDlgBs1OtpMain.btnGetCodeClick(Sender: TObject); var sCode: String; i: Integer; begin Randomize; for i := 0 to 5 do sCode := sCode + IntToStr(RandomRange(0, 10)); edGenCode.Text := sCode; end; end.