楼主 omnw |
VBA中字符串有两种:变长与定长的字符串。变长字符串最多可包含大约 20 亿 ( 2^31)个字符。定长字符串可包含 1 到大约 64K ( 2^16 ) 个字符。那么如何理解变长与定长字符串的区别呢? 先来看一段代码:
你是否认为上面的输出必然是两个TRUE,答案自然是否定的。选择从这儿开始,只是为了加深你的印象。 在VBA中,一种是变长的字符串,这是我们常用的,声明的方法可以是下面的写法之一: Dim s As String Dim s$ 另外一种叫定长字符串,声明的方法如下: Dim s As String * 2 上面声明了一个长度为2的字符串。 对变长的字符串,在声明后,VBA将自动将其初始化为0长度的空字符串。 Dim s$ s="" 上面两行代码的第二句是写程序的一个好习惯,但却是没有必要的。 变长字符串占用的内存空间由系统动态分配。 来看看定长字符串。 声明定长字符串后,系统将为它分配一个声明长度的字符串,并且在运行期间这个长度不可改变。在被初始化前,定长字符串的各字符用ASCII码为0的字符填充。
上面这段代码会在调试窗口输出两个0。 但定长字符串一旦被初始化或被重新赋值,则按这样的规则处理:超过长度的部分将被舍弃,不足的尾部用空格填充(后面会提到,API例外)。 我们在上段代码中加一句s=""看看:
将会输出两个32(32是空格的ASCII码)。 同样的,把s=""换成s="ABCD",将会输出65和66,超过长度的“CD”将被舍弃,有兴趣自己试试吧。 |
2楼 laoyebin |
到现在都没用过定长,呵呵,恶补一下知识 |