QQ登录

只需一步,快速开始

搜索
【活动】边做笔记边学习,还能赢取奖学金!
查看: 62|回复: 0

[学习笔记] 阶段性上机实践(小结)01- 零基础入门学习Delphi 010

[复制链接]
累计签到:597 天
连续签到:21 天
最佳答案
264 
发表于 7 天前 | 显示全部楼层 |阅读模式

马上注册加入鱼C,享用更多服务吧^_^

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
这节课是围绕这几个小练习,综合了前面学习到的知识,并学会如何把一个题目从构思到实现的一步步的过程,如何逐步修改错误优化程序。
第一个程序是鱼C加密程序V1.0,实际上是个登录输入密码的过程。
先用python写一个:
  1. Password = 'Fishc.com!'
  2. n = 3
  3. while True:
  4.     s = input('请输入密码,您还有%d次机会!'%n)
  5.     if s == Password:
  6.         print('恭喜你, 密码正确!')
  7.         exit()
  8.     if n > 1:
  9.         n -= 1
  10.     else:
  11.         print('密码错误,悲催了!')
  12.         exit()
复制代码

首先python需要一个循环,但在delphi中就不需要写这个循环了,因为delphi开发的windows程序本身就处在一个大的循环中,并不断查询各种事件,当发生事件时运行相应的程序。
首先python需要一个循环,但在delphi中就不需要写这个循环了,因为delphi开发的windows程序本身就处在一个大的循环中,并不断查询各种事件,当发生事件时运行相应的程序。 1.jpg
2.jpg
3.JPG
  1. implementation
  2. Const
  3.   Password: String = 'Fishc.com!';
  4. Var
  5.   n: Integer = 3;
  6. {$R *.dfm}

  7. procedure TForm1.FormCreate(Sender: TObject);
  8. begin
  9.   SetWindowLong(Edit1.Handle, GWL_STYLE, GetWindowLong(Edit1.Handle, GWL_STYLE) or ES_CENTER);
  10.   Edit1.Invalidate;
  11. end;

  12. procedure TForm1.Button1Click(Sender: TObject);
  13. begin
  14.   if Edit1.Text = Password then
  15.     begin
  16.       MessageBox(handle, '恭喜你, 密码正确!', '恭喜', MB_OK);
  17.       Close;
  18.     end
  19.   else
  20.     begin
  21.       if n > 1 then
  22.         begin
  23.           n := n - 1;
  24.           Label1.Caption := '密码输入错误,您还有' + IntToStr(n) + '次机会!';
  25.           Edit1.Text := '';
  26.         end
  27.       else
  28.         begin
  29.           MessageBox(handle,  '密码错误,悲催了!', '警告', MB_OK or MB_ICONSTOP);
  30.           Close;
  31.         end;
  32.     end;
  33. 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的内容,这段程序比小甲鱼的简化了。
4.JPG
5.JPG
  1. procedure TForm1.CheckBox1Click(Sender: TObject);
  2. begin
  3.   if CheckBox1.Checked = True then
  4.     Edit1.PasswordChar:= #0
  5.   else
  6.     Edit1.PasswordChar:= '*';
  7. end;
复制代码


另外就是对密码做了简单的加密,其实这里只是给了一个思路,更复杂的加密手段需要考虑到防止他人的逆向分析。
  1. procedure TForm1.Button1Click(Sender: TObject);
  2. var
  3.   Password2, Password3: String;

  4. begin
  5.   Password2:= Password;
  6.   Delete(Password2, 1, 3);
  7.   Password3:= Edit1.Text;
  8.   Delete(Password3, 1, 3);
  9.   if Password2 = Password3 then
复制代码




本帖被以下淘专辑推荐:

1. 如果您的提问得到满意的答案,请务必选择【最佳答案】;2. 如果想鼓励一下楼主或帮助到您的朋友,可以给他们【评分】作为奖励;
3. 善用【论坛搜索】功能,那里可能有您想要的答案;4. 粘贴代码请点击编辑框上的 <> 按钮,否则您的代码可能会被“吃掉”!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋手机版Archiver( 粤公网安备 44051102000370号 | 粤ICP备11014136号

© 2010-2017 FishC.com GMT+8, 2017-7-23 08:43 Powered by Discuz! X2.5 Theme by dreambred

快速回复 返回顶部 返回列表