|
马上注册,结交更多好友,享用更多功能^_^
您需要 登录 才可以下载或查看,没有账号?立即注册
x
这节课是围绕这几个小练习,综合了前面学习到的知识,并学会如何把一个题目从构思到实现的一步步的过程,如何逐步修改错误优化程序。
第一个程序是鱼C加密程序V1.0,实际上是个登录输入密码的过程。
先用python写一个:
- Password = 'Fishc.com!'
- n = 3
- while True:
- s = input('请输入密码,您还有%d次机会!'%n)
- if s == Password:
- print('恭喜你, 密码正确!')
- exit()
- if n > 1:
- n -= 1
- else:
- print('密码错误,悲催了!')
- exit()
复制代码
首先python需要一个循环,但在delphi中就不需要写这个循环了,因为delphi开发的windows程序本身就处在一个大的循环中,并不断查询各种事件,当发生事件时运行相应的程序。
首先python需要一个循环,但在delphi中就不需要写这个循环了,因为delphi开发的windows程序本身就处在一个大的循环中,并不断查询各种事件,当发生事件时运行相应的程序。
- implementation
- Const
- Password: String = 'Fishc.com!';
- Var
- n: Integer = 3;
- {$R *.dfm}
- procedure TForm1.FormCreate(Sender: TObject);
- begin
- SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
- Edit1.Invalidate;
- end;
- procedure TForm1.Button1Click(Sender: TObject);
- begin
- if Edit1.Text = Password then
- begin
- MessageBox(handle, '恭喜你, 密码正确!', '恭喜', MB_OK);
- Close;
- end
- else
- begin
- if n > 1 then
- begin
- n := n - 1;
- Label1.Caption := '密码输入错误,您还有' + IntToStr(n) + '次机会!';
- Edit1.Text := '';
- end
- else
- begin
- MessageBox(handle, '密码错误,悲催了!', '警告', MB_OK or MB_ICONSTOP);
- Close;
- end;
- end;
- end;
复制代码
可以看出其if嵌套是比较繁杂的,远不如python简明清晰。
两个小问题:
1. 程序只有一个关闭按钮,没有最小化最大化,要把BorderStyle设置为bsDialog
2. Edit控件的输入内容居中,这个其实在Delphi005中已经学到了,只需要两个语句。
SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
Edit1.invalidate; //先让edit1失效,然后windows自动再启动它,相当于刷新,就使新的设置生效了。
一个小技巧
选中内容,Tab缩进右移,Shift-Tab缩进左移。
鱼C加密程序V2.0增加了一个CheckBox控件,用以控制显示或不显示edit的内容,这段程序比小甲鱼的简化了。
- procedure TForm1.CheckBox1Click(Sender: TObject);
- begin
- if CheckBox1.Checked = True then
- Edit1.PasswordChar:= #0
- else
- Edit1.PasswordChar:= '*';
- end;
复制代码
另外就是对密码做了简单的加密,其实这里只是给了一个思路,更复杂的加密手段需要考虑到防止他人的逆向分析。
- procedure TForm1.Button1Click(Sender: TObject);
- var
- Password2, Password3: String;
- begin
- Password2:= Password;
- Delete(Password2, 1, 3);
- Password3:= Edit1.Text;
- Delete(Password3, 1, 3);
- if Password2 = Password3 then
复制代码
|
评分
-
查看全部评分
|