声明动态数组未按预期工作

时间:2014-09-26 12:24:34

标签: arrays vbscript asp-classic dynamic-arrays

RsProxyList.Open objDBCommand,,1,1
dim recCount:recCount = RsProxyList.RecordCount
Dim output(recCount,2)

我收到错误,因为recCount的类型错误。我试图将其转换为Int,但这也不起作用。以下工作正常:

RsProxyList.Open objDBCommand,,1,1
dim recCount:recCount = RsProxyList.RecordCount
Dim output(3,2)

如何转换recCount以使此数组声明起作用?

1 个答案:

答案 0 :(得分:1)

您需要先将Array声明为动态,然后使用ReDim动态设置第一个维度,就像这样;

Dim output() 'Declare a "Dynamic Array"
ReDim output(recCount, 2) 'Set dynamic first dimension.

通过指定这样的尺寸;

Dim output(10, 2) 'Declare a "Fixed Array"

你告诉VBScript构建一个固定数组,它不接受变量作为维度声明。


Dim output()Dim output

关于使用

似乎存在一些争论
Dim output()

Dim output
  @Bond中{p> comments below提出了我认为使用Dim output()最有说服力的内容。

     

因为VBScript将所有变量存储为Variant数据类型,使用Array声明Dim output就像声明任何其他变量一样,而Dim output()创建Array (0大小的数组,但仍然是一个数组),这意味着就VBScript运行时而言,存在一个显着差异,Dim output()Array

     

这有什么关系?,这很重要因为像IsArray()这样的函数仍会将变量检测为Array,而使用Dim output声明的“数组”将返回False }。


有用的链接