VB如何定义b使len(text1.text)=len(b)

比如开始定义变量aasstring*100,函数返回a="da01564"(长度不确定100以内)如何判断出a的真真实长度?再如何定义变量b,使b=a的有效字符?要求等同... 比如 开始定义变量 a as string*100, 函数返回a="da0 1564"(长度不确定100以内)
如何判断出a的 真真实长度?
再如何定义变量b,使b=a的有效字符?
要求等同效果:text1.text=a 从而使len(text1.text)=len(b)
谢谢
不好意思 可能是我没说明白
Private Sub Command1_Click()
Dim a As Long, b As String * 100
a = FindWindow("Notepad", vbNullString)
GetWindowText a, b, 101
print b
‘b的真实长度是多少?
End Sub
展开
 我来答
UNi2013
2013-06-18 · TA获得超过293个赞
知道小有建树答主
回答量:185
采纳率:100%
帮助的人:158万
展开全部

Private Sub Command1_Click()

    Dim a  As String * 100

    a = "da0 1564"

    Print a

    Print Len(Trim(a))  ' 用Trim消除空格再 Len()

End Sub

追问
不好意思 我没说明白
追答

Private Declare Function FindWindow Lib "user32" Alias "FindWindowA" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long

Private Declare Function GetWindowText Lib "user32" Alias "GetWindowTextA" (ByVal hwnd As Long, ByVal lpString As String, ByVal cch As Long) As Long


Private Sub Command1_Click()

    Dim a As Long, b As String * 100

    a = FindWindow("Notepad", vbNullString)

    GetWindowText a, b, 101

    Print b

    '检验 b

    Print

    Dim i As Integer

    For i = 1 To 100

        Print Asc(Mid(b, i, 1));

        If i Mod 10 = 0 Then Print

    Next

    '发现 b 包含 空格Chr(32) 和 Chr(0)

    '因此, 去空格, 去 Chr(0), 再 Len()

    Print

    Print "b的真实长度为", Len(RTrim(Replace(b, Chr(0), "")))

End Sub


syx54
2013-06-18 · TA获得超过7378个赞
知道大有可为答主
回答量:6567
采纳率:83%
帮助的人:2736万
展开全部

实验知道,定长字符串默认值是一串西文空格(ASCII码值为32)。

所以,这样理解:

所以,可以这样写代码,达到你的要求:

Dim a As String * 100

Dim b As String

Dim i As Integer

Dim n As Integer

a = "da0 1564"

For i = 100 To 1 Step -1

   If Asc(Mid(a, i, 1)) <> 32 Then

      n = i

      Exit For

   End If

Next i

b = Left(a, 8)

Print a

Print b


你这里用到的是API函数?

要得到B的实际长度,还是同样的道理呀!难道你没有看懂?


Private Sub Command1_Click()

Dim a As Long, b As String * 100

a = FindWindow("Notepad", vbNullString)

GetWindowText a, b, 101

print b

‘b的真实长度是多少?


Dim i as Integer

   for i=100 to 1 step -1

      if asc(mid(b,i))<>32 then

         msgbox "长度为:" & i

         exit for

      end if

   next i

end sub

本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
chinaboyzyq
2013-06-18 · TA获得超过1.3万个赞
知道大有可为答主
回答量:1.3万
采纳率:89%
帮助的人:3243万
展开全部
b的真实长度为:
Print Len(RTrim(Replace(b, Chr(0), "")))
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
帐号已注销
2013-06-18 · TA获得超过242个赞
知道小有建树答主
回答量:268
采纳率:0%
帮助的人:266万
展开全部
api函数GetWindowText的返回值就是复制到字符串b中的字符长度,
其他情况下,你可以这样定义
Dim a as string
a = string(100,chr(0))
a中写入值后用api函数lstrlen可以获取它的长度
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
zhongjin175891
2013-06-18 · 超过37用户采纳过TA的回答
知道小有建树答主
回答量:105
采纳率:0%
帮助的人:93万
展开全部
VB的Len函数取出的是个数,并且是以Unicode形式计算的,而LenB取得是真实的字节数目,有关字符串操作的问题请看我的QQ日志,QQ:1285897645,看完你就明白一切了
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(3)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式