当前位置:编程学习 > VB >>

VB字符串长度出鬼了~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~



UserName = "114290018911"
Port = Len(UserName)              ‘这个是12没有问题
Port = Len(textUserName.Text)      ’这个是从窗体textbox获取到的,窗体显示也是114290018911,但是port就是为16,去空格也没用


奇怪了,没用过vb,别人的程序有问题,现在要调试 --------------------编程问答-------------------- 没有发现问题 --------------------编程问答--------------------
引用楼主 sun83819 的回复:
VB code


UserName = "114290018911"
Port = Len(UserName)              ‘这个是12没有问题
Port = Len(textUserName.Text)      ’这个是从窗体textbox获取到的,窗体显示也是114290018911,但是port就是为16,去空格也没用



奇怪了,没用过vb,别人的程序有问题,现在……
有个办法
dim s$,i%
for i=1 to len(Len(textUserName.Text))
s=s & asc(mid(textUserName.Text,i,1)) & " "
next
msgbox s'对照着看每个字符的asc码,估计是多了回车换行或者tab等不可见字符什么的 --------------------编程问答-------------------- 问题出在你的textUserName.Text上,显然它不是:114290018911 --------------------编程问答-------------------- --------------------编程问答-------------------- 某些时候请用LenB 来测试。 --------------------编程问答-------------------- --------------------编程问答-------------------- 这个容易,你把 textUserName 的内容逐个打印出 ASCII 码,就知道里面有什么了。

Port = Len(textUserName.Text)

For i = 1 To Port
    Debug.Print Hex(Asc(Mid(textUserName, i, 1)))
Next i

一般情况下,是有非可打印字符。 --------------------编程问答-------------------- 非可打印字符至少包括半角空格、Tab字符、全角空格、换行符、回车符、当前字体对应字库中无规定的字符…… --------------------编程问答-------------------- 一般是回车啊,换行等不可见字符,尤其是复制粘贴的字,最容易带这些东西 --------------------编程问答-------------------- 估计就是回车 vbcrlf
你看看 Msgbox InStr(textUserName.Text,vbcrlf) 是什么结果 --------------------编程问答--------------------
有可能你的textUserName控件和数据库进行了连接,如果数据库中对应的字段是定长的话,读取出来有可能会有错误,查查这个可能再说,还不行就把控件的属性贴上来试试看。

一般这种情况最后几个字节是0x0。 --------------------编程问答-------------------- textusername中,肯定包含了隐藏字符,不信,使用直接赋值,看还是不是16

textusername=username --------------------编程问答-------------------- 1. VB中有些特殊字符使用trim不能去除, 可以先将变量非给编辑框,然后编辑框在trim,最后赋给变量就正常了
2. 长度函数LenB精确,不过一般Len够用 
补充:VB ,  基础类
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,