📄 load.pas
字号:
unit load;
interface
uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, DB, jpeg, ExtCtrls, ADODB,AES, Menus;
type
Tloadfrm = class(TForm)
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
ComboBox1: TComboBox;
Edit1: TEdit;
btok: TButton;
btcancel: TButton;
Label4: TLabel;
Button1: TButton;
Label5: TLabel;
ADOQuery1: TADOQuery;
ADOTable1: TADOTable;
Label6: TLabel;
Label7: TLabel;
procedure btcancelClick(Sender: TObject);
procedure btokClick(Sender: TObject);
procedure FormCreate(Sender: TObject);
procedure FormClose(Sender: TObject; var Action: TCloseAction);
procedure Button1Click(Sender: TObject);
procedure FormShow(Sender: TObject);
private
procedure denglu();
procedure zhuce();
{ Private declarations }
public
{ Public declarations }
end;
var
loadfrm: Tloadfrm;
quanxian,done:integer;
leader,usern:string;
implementation
uses unit1,HardInfo,zhuce;
{$R *.dfm}
//var
//ap:TStringList;{字符串列表变量}
//AppPath:string;
procedure Tloadfrm.btcancelClick(Sender: TObject);
var
k:integer;
begin
k:=messagebox(0,Pchar('确实要退出吗?'),PchaR('确认信息'),Mb_YesNo);
if k=6 then
begin
done:=1;
close;
end;
end;
//单击登陆按钮事件
procedure Tloadfrm.btokClick(Sender: TObject);
var
list:Tstringlist;
begin
try
if fileExists('denglu.ini') then
begin
list:=Tstringlist.Create ;
list.LoadFromFile('denglu.ini');
if list[0]<>'0' then list[0]:=inttostr(strtoint(list[0])+1);
list.SaveToFile('denglu.ini');
list.free;
end
else
begin
showmessage('系统配置文件数据库文件丢失,请处理!!');
done:=1;
END;
denglu();
EDIT1.Text:='';
except
showmessage('启动程序意外出错');
done:=1;
end;
end;
//注册新用户子程序
procedure Tloadfrm.zhuce();
var
strsql,zhuceuser,zhucename:string;
list:Tstringlist;
begin
list:=Tstringlist.Create ;
if fileExists('denglu.INI') then
begin
list.LoadFromFile('denglu.INI');
//if list[0]='0' then
// begin
zhuceuser:= InputBox('注册用户','请输入用户名:','');
if zhuceuser='' then
begin
showmessage('用户名不能为空');
done:=1;
end
else
begin
zhucename:= InputBox('输入用户姓名','请输入用户真实姓名: ','');
if zhucename='' then
begin
showmessage('姓名不能为空');
done:=1;
end
else
begin
try
strsql:='select * from 用户表';
ADOquery1.Close ;
ADOquery1.SQL.Text :=strsql;
ADOquery1.Open ;
ADOquery1.Append ;
ADOquery1.FieldByName('用户名').AsString :=zhuceuser ;
ADOquery1.FieldByName('姓名').AsString :=zhucename ;
ADOquery1.FieldByName('密码').AsString :=zhuceuser ;
ADOquery1.FieldByName('权力').AsInteger :=5;
ADOquery1.Post ;
list[0]:=inttostr(strtoint(list[0])+1);
list.SaveToFile('denglu.ini');
except
showmessage('建立用户失败,可能的原因是该用户名已经存在,请换个用户名');
end;
end;
end;
//end else showmessage('不能注册新用户');
end else showmessage('系统配置文件数据库文件丢失,请处理!!');
end;
//登陆子程序
procedure Tloadfrm.denglu();
var
strsql,password,temp:string;
list:Tstringlist;
i:integer;
newuser:boolean;
begin
newuser:=true;
usern:=combobox1.Text ;
password:=edit1.Text ;
if usern='' then
begin
showmessage('用户名无效,请重新输入');
loadfrm.Tag :=0;
combobox1.SetFocus ;
exit;
end
else begin
strsql:='select * from 用户表 where 用户名 = "'+ usern+'"';
ADOquery1.Close ;
//ADOquery1.RequestLive :=true;
ADOquery1.SQL.Text :=strsql;
ADOquery1.Open ;
if ADOquery1.RecordCount >0 then begin
if password=ADOquery1.FieldValues ['密码'] then
begin
quanxian:=ADOquery1.FieldValues ['权力'];
leader:=ADOquery1.FieldValues ['姓名'];
ADOquery1.Close;
MainForm.qianxiang.Open ;
MainForm.qianxiang.Edit ;
MainForm.qianxiang.FieldByName('本班收支').AsFloat :=0;
MainForm.qianxiang.Post ;
MainForm.qianxiang.Close ;
list:=Tstringlist.Create ;
if fileExists('denglu.ini') then
begin
list.LoadFromFile('denglu.ini');
for i:=2 to list.Count-1 do
if usern =list[i] then newuser:=false;
if newuser then
begin
if list.Count >9 then list[9]:=usern else list.Add(usern);
temp:=list[list.count-1];
for i:=list.Count-1 downto 2 do
list[i]:=list[i-1];
list[2]:=temp;
list.SaveToFile('denglu.ini');
list.Free;
end;
ADOTable1.Open;
ADOTable1.Edit;
if loadfrm.Tag =1 then
begin
ADOTable1.Last ;
ADOTable1.FieldByName('退出时间').AsDateTime :=now;
MainForm.qianxiang.Open ;
ADOTable1.FieldByName('本班收支').AsFloat := MainForm.qianxiang.FieldValues['本班收支'];
ADOTable1.Post;
MainForm.qianxiang.Close ;
end;
ADOTable1.Append ;
ADOTable1.FieldByName('用户名').AsString :=usern;
ADOTable1.FieldByName('权力').AsInteger :=quanxian;
ADOTable1.FieldByName('登陆时间').AsDateTime :=now;
ADOTable1.Post ;
done:=1;
end
else
begin
showmessage('系统配置文件数据库文件丢失,请处理!!');
done:=1;
end;
end
else begin
showmessage('密码错误,请重新输入');
loadfrm.Tag :=-1;
edit1.SetFocus ;
exit;
end;
end
else begin
showmessage('用户名无效,请重新输入');
loadfrm.Tag :=-1;
combobox1.SetFocus ;
edit1.Text :='';
exit;
end;
end;
loadfrm.Tag :=loadfrm.Tag +1;
if loadfrm.Tag >1 then
loadfrm.Tag :=1;
close;
end;
procedure Tloadfrm.FormCreate(Sender: TObject);
var
i:integer;
list:Tstringlist;
ff: THandle;
begin
list:=Tstringlist.Create ;
if fileExists('denglu.ini') then
begin
list.LoadFromFile('denglu.ini');
if list[0]='0' then button1.visible:=true else button1.visible:=false;
for i:=2 to list.Count-1 do
combobox1.Items.Add(list[i]);
end
else begin
ff:=FileCreate('denglu.ini');
fileclose(ff);
list.LoadFromFile('denglu.ini');
list.Add('0');
list.Add('0');
list.SaveToFile('denglu.ini');
end;
list.Free;
end;
procedure Tloadfrm.FormClose(Sender: TObject; var Action: TCloseAction);
begin
{try
//if loadfrm.Tag =1 then
{if quanxian >2 then mainfrm.n40.Visible :=true else mainfrm.n40.Visible :=false;
if quanxian =5 then mainfrm.n36.Visible :=true else mainfrm.n36.Visible :=false;
if quanxian =5 then mainfrm.n37.Visible :=true else mainfrm.n37.Visible :=false;
if quanxian >3 then mainfrm.n7.Visible :=true else mainfrm.n7.Visible :=false;
if quanxian >2 then mainfrm.ToolButton2.Visible :=true else mainfrm.ToolButton2.Visible :=false; }
{MainForm.StatusBar1.Panels[2].Text :=' 当前登陆用户: '+usern+' 姓名:'+leader;
mainform.user :=usern;
mainform.user_name :=leader;
if quanxian >2 then
mainform.bitbtn5.Enabled :=true
else mainform.bitbtn5.Enabled :=false;
//mainfrm.Repaint;
//end;
//main.shua :=true;
except
ADOquery1.Close;
showmessage('程序发生意外,请重新启动程序');
end; }
end;
procedure Tloadfrm.Button1Click(Sender: TObject);
begin
try
zhuce();
except
showmessage('注册新用户出错');
end;
end;
//系统初始化部分
//initialization //自动添加数据库别名
procedure Tloadfrm.FormShow(Sender: TObject);
var
diskstr,key,datestr,mm:string;
begin
ADOquery1.Close ;
ADOquery1.SQL.Text :='select * from jls';
ADOquery1.Open ;
diskstr:=trim(HardInfo.GetCPUInfo); //获得CPU序列号
//diskstr:=trim(StrPas(HardInfo.GetIdeSerialNumber)); //获得硬盘序列号
if (not ADOquery1.Eof) and (ADOquery1.FieldValues ['户名']<>'') then
begin
try
case ADOquery1.FieldValues ['c2'] of
0: key:=DecryptString(ADOquery1.FieldValues ['户名'], ADOquery1.FieldValues ['c1']);
1: key:=DecryptString(ADOquery1.FieldValues ['户名'], ADOquery1.FieldValues ['c1'], kb192);
2: key:=DecryptString(ADOquery1.FieldValues ['户名'], ADOquery1.FieldValues ['c1'], kb256);
end;
except
//showmessage('注册码错误!!!');
ADOquery1.Edit ;
case ADOquery1.FieldValues ['c2'] of
0: ADOquery1.FieldByName('力').AsString :=EncryptString(inttostr(strtoint(trim(DecryptString(ADOquery1.FieldValues ['力'], ADOquery1.FieldValues ['c1']))) + 3),ADOquery1.FieldValues ['c1']);
1: ADOquery1.FieldByName('力').AsString :=EncryptString(inttostr(strtoint(trim(DecryptString(ADOquery1.FieldValues ['力'], ADOquery1.FieldValues ['c1'],kb192))) + 3),ADOquery1.FieldValues ['c1'], kb192);
2: ADOquery1.FieldByName('力').AsString :=EncryptString(inttostr(strtoint(trim(DecryptString(ADOquery1.FieldValues ['力'], ADOquery1.FieldValues ['c1'],kb256))) +3),ADOquery1.FieldValues ['c1'], kb256);
end;
//ADOquery1.FieldByName('力').AsInteger :=ADOquery1.FieldValues ['力'] + 3;
ADOquery1.Post ;
zhucefrm.Memo1.Text :=diskstr;
zhucefrm.Show ;
exit;
end;
end;
KEY:=trim(key);
if key<>'' then
datestr:=copy(KEY,0,10)
else datestr:=datetostr(date);
mm:=copy(KEY,11,255);
if (mm<>diskstr) or (date > strtodate(datestr)) then
begin
ADOquery1.Edit ;
//ADOquery1.FieldByName('力').AsInteger :=ADOquery1.FieldValues ['力'] + 3;
try
case ADOquery1.FieldValues ['c2'] of
0: ADOquery1.FieldByName('力').AsString :=EncryptString(inttostr(strtoint(trim(DecryptString(ADOquery1.FieldValues ['力'], ADOquery1.FieldValues ['c1']))) + 3),ADOquery1.FieldValues ['c1']);
1: ADOquery1.FieldByName('力').AsString :=EncryptString(inttostr(strtoint(trim(DecryptString(ADOquery1.FieldValues ['力'], ADOquery1.FieldValues ['c1'],kb192))) + 3),ADOquery1.FieldValues ['c1'], kb192);
2: ADOquery1.FieldByName('力').AsString :=EncryptString(inttostr(strtoint(trim(DecryptString(ADOquery1.FieldValues ['力'], ADOquery1.FieldValues ['c1'],kb256))) +3),ADOquery1.FieldValues ['c1'], kb256);
end;
except
done:=1;
close;
end;
ADOquery1.Post ;
zhucefrm.Memo1.Text :=diskstr;
if date > strtodate(datestr) then showmessage('激活码过期,请重新激活,否则数据随时可能丢失');
zhucefrm.Show ;
//showmessage('请及时注册,否则数据随时可能丢失');
end;
end;
end.
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -