Private Sub Form_Load()
Dim sBuffer As String
Dim lSize As Long
sBuffer = Space$(255)
lSize = Len(sBuffer)
Call GetUserName(sBuffer, lSize) '防止存在上一次输入的用户名
'API中字符串作参数,需要提前确定大小 '但为啥GetUserName
If lSize > 0 Then
txtUserName.Text = ""
Else
txtUserName.Text = vbNullString '没有字符串
End If
这是在学生信息管理系统的frmLogin窗体中的一段代码,开始看这段代码时,真是寸步难行,不过现在,我似乎对这段代码的功能有点理解,先把一些重要部分做一点解释,理解不当处,还请大家及时指正。
Space()函数在这里生成一个字符串,字符串的内容为空格,长度为指定的长度
Space()返回特定数目的空格的Variant型或String型
Space返回Variant类型
Space$返回String类型
后者速度比前者快
通过Len()函数获得该字符串的长度
那么GetUserName在这里到底有什么作用呢?
从网上查到: 随着系统安全性的加强,每个系统里越来越多不同的帐号登录。 假如你正在开发一个上网安全软件,让不同的用户有不同的上网
权限,这样就需要识别当前的用户是什么帐号登录了,然后再作 出权限分配。还有出错时,也需要对当前帐号进行记录下来,因
为不同的帐号有不同的权限,有些磁盘是不允许操作的。面对这 些需求,就需要使用函数GetUserName。
现在,我们可能对以上这段文字不是很理解,但是没关系,不影响我们明白
GetUserName()的作用。
该函数有两个参数
参数名称 | 参数类型 | 作用 |
lpBuffer | String | 一个字符串缓冲区,预先初始化成由nSize指定的长度。它将用于容纳用户名,是获取名称缓冲区。 |
nSize | Long | 初始化成lpBuffer的长度。返回以后,它会包含载入lpBuffer的字符数量 ,是缓冲区的大小和返回帐号的大小。 |
sBuffer 和 lSize 分别为IpBuffer 和nSize的实参
当缓冲区的大小>0时( If lSize > 0)时,......
否则,......vbNullString
vbNullString: 值为 0 的字符串
用来调用外部过程;与长度为零的字符串 ("") 不同