• 软件测试技术
  • 软件测试博客
  • 软件测试视频
  • 开源软件测试技术
  • 软件测试论坛
  • 软件测试沙龙
  • 软件测试资料下载
  • 软件测试杂志
  • 软件测试人才招聘
    暂时没有公告

字号: | 推荐给好友 上一篇 | 下一篇

Visual Basic 深度下潜之海蛇缠绕

发布: 2007-6-21 21:57 | 作者:   | 来源:   | 查看: 14次 | 进入软件测试论坛讨论

领测软件测试网

下一页 1 2 

   

海蛇”有人在惊呼。

   只见在海底深处游来一条黑色的长长的海蛇,几乎所有的人都在发呆。但是海蛇说了一句让我们胆寒的话“我就是有名的VB字符串,如果你们继续下潜的话,就得想通过我”。

   我习惯性的观察着它,因为我知道要打败一个对手,就必须深入的了解对手。

   因此我写了一段小CODE来了解它。

 Dim str As String
str = "Give me a 美女"
Dim L1 As Long
Dim L2 As Long
L1 = Len(str)
L2 = LenB(str)
Debug.Print L1, L2

   这个代码运行得很好,完全符合我的想像,在立即窗口中显示了12,24,

   Good,于是我准备在窗口中用TextOut把它打印出来,至于为什么我一定要这个函数而不用其它的,你管得着么?所以我写下了于下代码

Dim str As String
str = "Give me a 美女"
Dim L1 As Long
Dim L2 As Long
L1 = Len(str)
L2 = LenB(str)
Debug.Print L1, L2
TextOut Me.hDC, 100, 100, str, L1

   结果我发现不对?看来是字符串长度不对,想起来了,在VB中字符串是BSTR型的,那么应该用L2作长度,对不对呢,试试就知道了。

   天呀,在字符串后出现了天书,难道是上帝在暗示我什么时候给我一个美女?

   不过我想上帝没有这么快就会答应我,因此一定是我的代码有问题。

   当我正在沉思的时候,所有的人都在观注着我。没办法,太帅了。

   所以我又迅速写下了以下的代码

Private Declare Function LenANSI Lib "kernel32" Alias "lstrlenA" (ByVal string1 As String) As Long
……
Dim str As String
str = "Give me a 美女"
Dim TrueLen As Long
TrueLen = LenANSI(str)
TextOut Me.hDC, 100, 100, str, TrueLen

   当我快速地按下F5后,天空中便有了回响,“Give me a 美女”这句话已得到了正确的响应。

   这时候我看着这条海蛇,满有信心地向它游去,但是它却很诡秘的一笑。

   你见过蛇的笑容么,它也很缓缓的游过来了。

   “如果你们打算就这样通过我的话,也想得太容易了”这句话为什么这么熟悉呢。是不是在黄金十二宫里的什么人说的吧,

   “给你们一个小考验,你们知道 vbNullString 和 “” 有什么区别么?”

   “别以为你是海蛇就了不起,你这问题也太简单了吧”我身边一个长得不是很难看的小伙子,人送外号( 天下第七帅 ),“你以为我没读过 海洋生物指南 呀(对象浏览器)

Const vbNullString = ""

   VBA.Constants 的成员

   当调用一个外部过程,需要一个非零值的字符串时,所使用的常数

   “那你的意思是说是一样的了,那么vbNullChar呢?”海蛇不怀好意地看着天下第七帅。

   “那当然是一样的了,你看VB的说明么”天下第七帅冲口而出,不过他又觉得好象有些不对。但是VB的对象浏览器上的确写着

Const vbNullChar = ""

   VBA.Constants 的成员

   那么下面这段代码代表什么呢?

   海蛇给出了它的代码

Dim s1 As String
Dim s2 As String
Dim s3 As String
s1 = vbNullString
s2 = vbNullChar
s3 = ""

Debug.Print StrPtr(s1), StrPtr(s2), StrPtr(s3)
Debug.Print LenB(s1), LenB(s2), LenB(s3)


   天下第七帅按下F5后,他很惊讶海蛇代码的运行结果

0 1899284 1434596

0 2 0

延伸阅读

文章来源于领测软件测试网 https://www.ltesting.net/


关于领测软件测试网 | 领测软件测试网合作伙伴 | 广告服务 | 投稿指南 | 联系我们 | 网站地图 | 友情链接
版权所有(C) 2003-2010 TestAge(领测软件测试网)|领测国际科技(北京)有限公司|软件测试工程师培训网 All Rights Reserved
北京市海淀区中关村南大街9号北京理工科技大厦1402室 京ICP备10010545号-5
技术支持和业务联系:info@testage.com.cn 电话:010-51297073

软件测试 | 领测国际ISTQBISTQB官网TMMiTMMi认证国际软件测试工程师认证领测软件测试网