# Re: 程式问题

Posted by Honey on July 28, 1999 at 18:51:14:

In Reply to: 程式问题 posted by j on July 28, 1999 at 13:04:35:

:
: 请问以下的两行程式有什么作用？
: 以下的两行程式执行过后只得到长度为０的空字串，
: 为什么要大费周章的打那么多字？

: CloseStr = String(255, 0)
: CloseStr = Left(Closestr, InStr(1, Closestr, Chr(0)) - 1)

: 拜托各位帮帮我……
: 小弟感激不尽、感激不尽

我想这是某个程式的片段吧
试试以下程式
Dim Closestr As String
Closestr = "Hello Honey" & String(244, 0)
Closestr = Left(Closestr, InStr(1, Closestr, Chr(0)) - 1)
Me.Caption = Closestr
你会发现执行后Closestr这个变数剩下Hello Honey
原来填的空白部分消失了 若原来是一堆空白字串
空白去掉后 当然只剩空字串了

这个程式对VB的用途 是在API上
当某个API需要用传址(也就是将某个变数在记忆体上的位址传给程式)
的方式传回某个字串 这时得传入一个变数给他
他会将这个变数改成他要传回的值
而Dim Closestr As String
为可变长度的字串 实际上在记忆体上只有占用只有10个位元组
传入API也只有这样的长度 当字串超过这个长度时 后面的部分变看不到了
比较保险的办法就是先给他一个很长的空白字串->CloseStr = String(255, 0)
当API在CloseStr 填入一段不为空白的字串后
将后面的空白去掉 ->Closestr = Left(Closestr, InStr(1, Closestr, Chr(0)) - 1)
懂吧

Follow Ups:

- 多谢小琳和Honey的帮助 j 01:05:45 7/29/99 (0)
- 感激不尽…… j 23:31:15 7/28/99 (0)