请大家帮我看一下这一段vb程序

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,不满足条件,报错误提示后退出。
温馨提示:内容为网友见解,仅供参考
第1个回答  2006-04-06
改成这样就能限制只能输入三次了。

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
第2个回答  2006-04-06
便于保持整形变量i的数值在程序运行的始终不被改变。 :)
第3个回答  2006-04-06
static的作用是定义l为静态变量,static跟dim的区别是:static会自己动保存上次记录的数据,而dim只作一次计算,当过程完毕,则值变回初始值0
代码中的l=l+1就是系统统计的次数。

请大家帮忙看一下这道vb程序设计题
看右边的数字应该是斐波那契数序列,即,序列中的第1个和第2个元素均为1,其他的元素的值是其前两个元素的和。本题是对该数列求和到144.Option Base 1Private Sub Form_Click() Dim x() As Integer Dim i As Integer Dim sum As Integer ReDim x(2) x(1) = 1: x(2) ...

vb 请大家帮忙看看这句程序是什么意思,谢谢
ByVal hWndParent As Long, _ '从字义上来看应该就是父窗口句柄这个意思 ByVal nID As Long '这个id应该就是序号这个意思了...开始我也不懂这个API,我是翻看了一下关于这个API的代码,得出的意思.,希望给你帮助...参考资料:http:\/\/zhidao.baidu.com\/question\/77023595.html ...

请大家帮我解决一下这个vb程序!!!
Private Sub cmd1_Click()Dim S As String Dim i As Integer Open "e:\\in.txt" For Input As #1 '以文件号为1的文件号打开"e:\\in.txt"的文件 Do While Not EOF(1) '当不是文件结束时循环,Line Input #1, S '读出一行字符,并且传给变量S i = i + 1 '因为读出的第一行文件的...

vb 请大家帮忙看看这句程序是什么意思,万分感激谢
定义了一组常量

VB问题:下标越界 大家帮我看看这段程序
是Tempsheet(2) 越界了吧 这种数组是从0到i-1的 也就是说你这个数组是Tempsheet(0)和Tempsheet(1)两个元素

请大家 帮我翻一下 下面的vb代码 谢谢了 !
这么简单,还用翻译!!Randomize 初始化随机数,也就是说每次都产生不同的值。如果没有这个,程序启动产生的随机数是不变化的。 0~1之间。StrN = Int(Rnd * 101) + 100 这个你自己算啦~~~

大神你们好,请帮我看一下这段vb.net的 Invoke代码是什么意思..._百度...
其实这行代码和C_RunCompleted(image, Nothing)的效果类似,但在BackgroundWorker中解决了“线程安全”的问题。你可以把多线程看成几个工人同时干活。如果大家都共用一份材料,然后我给它补一块,你给它割一块,他再把其它材料焊上去,岂不是乱套了?Invoke的作用就是用一个线程模型调用方法,让主线程...

大家帮我看看VB串行通信程序出什么问题了
2、MSComm1.Output 支持两种数据类型,一是字符串,二是Byte数组,所以MSComm1.Output = send也是错的。dim send(0) as byte send(0) = 20 MSComm1.Output = send 3、由于不知道你真正的意思,我试着写一段简单的程序,如有疑问可以百度HI我。Private a(9, 9) As Byte Private Sub Command1...

请大家帮我看下这个用vb做的界面,他那个调色板的调用是怎么实现的呢...
你可以画一个picturebox 然后再上面加一个label改变形状为正方形,边框类型,然后复制一个,变成数组,然后在打开颜色面板的代码里写上,load label(i) label(i)的top 和left值及label(i)的backcolor=rgb(0-255,0-255,0-255)下面的combox的颜色就在label的click事件里写=label(i).backcolor ...

请大家帮我看看这段代码的问题!(vb.net)
你要把要删除的列表的那一行的关键字记录下来,删除列表之后利用关键字删除相关数据库中的内容。我自己写的代码你看下,我是先定义一个全局变量xx,用他来接收关键字保存起来。using System;using System.Collections.Generic;using System.ComponentModel;using System.Data;using System.Drawing;using System...

相似回答
大家正在搜