关于string类型:
string类型分为变长和定长两种,变长声明为dim MyStr as string,定长声明为dim MyStr2 as string *10,变长字符串长度可变,定长不可变,当MyStr2="abc"时,由于"abc"只有3位,vb将用空格补足剩下的7位,当MyStr2="abcdefghijklmnopq"时,由于超出了10位,10位后的将被截去
高级:string类型用于以A结尾api作参数传递时,vb会自动将unicode的字符串(vb中的字符串都是unicode)转换为ansi,stirng类型变量作为参数传递给api时,实际传递的是string的指针,所以byval Str1 as string这样的声明也可以Str1有api写回的返回值。
声明和使用变量时as 类型和标识符不能冲突,例如dim Var$ as long 是不行的,同样dim Var as long 使用时在Var后面加了不是&的标示符都是不行的
dim a,b,c as long=dim a as variant,b as variant,c as long,也就是说只有c是long型,a和b都是变体,这与其他语言有区别
dim a=dim a as variant未指明类型将被声明为变体
声明后string类型初值为空串"",数值类型为0,boolean为false(也是0嘛)
数组:
dim 数组名 ([lower to] upper,[[lower to] upper]) [as type]
[]内为可选内容,lower默认为0,as type不指定则为变体
一维数组
dim Arr(10) as long
包括Arr(0),arr(1),Arr(2),Arr(3),Arr(4),Arr(5),Arr(6),Arr(7),Arr(8),Arr(9),Arr(10)
11个元素
二维数组
dim Arr2(10,20) as long
动态数组
dim Arr3() as long
使用redim重新分配内存
redim Arr3(5) as long
可以在redim后面加上preserve关键字,这样可以保护已有数据,比如
dim MyArr() as long
redim MyArr(2) as long
MyArr(1)=1
MyArr(2)=2
redim MyArr(5) as long
这时MyArr(1),MyArr(2)的值就都没了,redim preserve MyArr(5) as long,就可以保护这些数据
但是如果数组空间变小了,被删的数据就丢了,
只有最后一维可以修改上限
好了,我们看看那个枚举素数的程序
Dim Arr() As Double
Dim Zhishu As Boolean
Dim i As Double
Dim CurNum As Double
Dim j As Double
Dim ArrCount As Double
Dim OutArr As String