龙之逆袭单机版:请大家帮我看一下这一段vb程序

来源:百度文库 编辑:高校问答 时间:2024/05/07 11:08:41
Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Static I As Integer
If KeyCode = 13 Then
If UCase(Text1.Text) = "HELLO" Then
Label2.Caption = "恭喜!您已成功进入本系统"
ElseIf I = 0 Or I = 1 Then
I = I + 1
Label2.Caption = "口令错!请重新输入"
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
Else
MsgBox "对不起,您不能使用本系统"
End
End If
End If
End Sub

在这段程序中,Static是起什么作用的?把它换成dim为什么就不行了呢?还有就是系统是如何把变量I识别为统计输入错误口令次数的?我是新手,笨的很,请帮帮我,谢谢!!

如果过程的级别变量是用 Static 关键字来声明的,则只要代码正在任何模块中运行,此变量仍会保留它的值。而当所有的代码都完成运行后,变量会失去它的范围和它的值。如果过程中用 Dim 声明变量,则当该过程的代码完成运行后,变量就会失去它的范围和它的值。

你的给出过程只是用来判断敲回车键的,模块中肯定还有其它过程和函数,也会用到变量i。Static变量i可以在整个模块中被调用,并操持它的值。变量i的初值应该为0,但在你给出的过程中没有赋初值,初值应该是在模块中其它位置赋的。

代码中,“ElseIf I = 0 Or I = 1 Then I = I + 1”就是用来统计输入口令错误的次数的。
i的初值为0;
第1次输入错误,i=0,满足条件,然后将i+1;
第2次输入错误,i=1,满足条件,然后将i+1;
第3次输入错误,i=2,不满足条件,报错误提示后退出。

改成这样就能限制只能输入三次了。

Private Sub Text1_KeyUp(KeyCode As Integer, Shift As Integer)
Static I As Integer
If KeyCode = 13 Then
If UCase(Text1.Text) = "HELLO" Then
Label2.Caption = "恭喜!您已成功进入本系统"
Else
I = I + 1
Label2.Caption = "口令错!请重新输入"
Text1.SelStart = 0
Text1.SelLength = Len(Text1.Text)
if i>=3 then
MsgBox "对不起,您不能使用本系统"
End
end if
End If
End Sub

便于保持整形变量i的数值在程序运行的始终不被改变。 :)

static的作用是定义l为静态变量,static跟dim的区别是:static会自己动保存上次记录的数据,而dim只作一次计算,当过程完毕,则值变回初始值0
代码中的l=l+1就是系统统计的次数。