数组

From Apache OpenOffice Wiki
Jump to: navigation, search
doc OOo
Book.png

除了简单变量(标量)以外,Apache OpenOffice Basic 还支持数组(数据字段)。数据字段包含多个变量,可通过索引对这些变量进行寻址。

简单数组

数组声明与简单变量声明类似。但与变量声明不同的是,数组名称后面是一对括号,其中包含元素数目规范。表达式

Dim MyArray(3)

声明了一个数组,其中包含四个变体数据类型的变量,即 MyArray(0)MyArray(1)MyArray(2)MyArray(3)

也可以在数组中声明特定类型的变量。例如,以下行声明了一个包含四个整型变量的数组:

Dim MyInteger(3) As Integer

在上面的示例中,数组的索引始终以标准起始值零开始。也可以为数据字段声明指定一个包含起始值和最终值的有效性范围。以下示例声明了一个包含六个整型值的数据字段,可以使用索引 5 至 10 对这些值进行寻址:

Dim MyInteger(5 To 10)

索引不必为正值。以下示例也是一个正确的声明,但具有负数据字段限制值:

Dim MyInteger(-10 To -5)

它声明了一个包含 6 个值的整型数据字段,可以使用索引 -10 至 -5 对这些值进行寻址。

在定义数据字段索引时,必须遵循以下三个限制:

  • 可能的最小索引为 -32768。
  • 可能的最大索引为 32767。
  • 最大元素数目(在数据字段维中)为 16368。

Template:Documentation/Note

起始索引的指定值

数据字段的起始索引通常以值 0 开始。也可以使用以下调用将所有数据字段声明的起始索引更改为值 1:

Option Base 1

如果要将此调用应用于模块中的所有数组声明,则必须将其包含在模块标头中。不过,此调用不影响通过 Apache OpenOffice API 定义的 UNO 序列,其索引始终以 0 开始。要使程序更清晰,应避免使用 Option Base 1。

如果使用 Option Base 1,数组中的元素数目不会受到影响,只有起始索引会发生变化。声明

Option Base 1
' ...
Dim MyInteger(3)

创建了 4 个整型变量,可以使用表达式 MyInteger(1)MyInteger(2)MyInteger(3)MyInteger(4) 来描述这些变量。

Template:Documentation/Note

多维数据字段

除了单维数据字段之外,Apache OpenOffice Basic 还支持使用多维数据字段。相应的维之间用逗号分隔。示例

Dim MyIntArray(5, 5)

定义了一个二维整型数组,每一维具有 6 个索引(可通过索引 0 至 5 进行寻址)。整个数组总共可记录 6 x 6 = 36 个整型值。

虽然可以在 Apache OpenOffice Basic 数组中定义数百个维,但可用内存量限制了可以拥有的维数。

数据字段维的动态变更

上面的示例基于已指定维的数据字段。也可以定义数据字段维动态变更的数组。例如,可以定义一个数组,以包含文本中所有以字母 A 开头的单词。由于最初不知道这些单词的数目,因此,需要以后能够更改字段限制值。为此,请在 Apache OpenOffice Basic 中使用以下调用:

ReDim MyArray(10)

Template:Documentation/Note

以下示例更改了初始数组维,以便可以记录 11 或 21 个值:

Dim MyArray(4) As Integer ' Declaration with five elements 
' ...
ReDim MyArray(10) As Integer ' Increase to 11 elements
' ... 
ReDim MyArray(20) As Integer ' Increase to 21 elements

在重置数组维时,可以使用前面几节中简要介绍的任意选项。其中包括声明多维数据字段和指定显式起始值和最终值。更改数据字段维后,所有内容都将丢失。如果要保留原始值,请使用 Preserve 命令:

Dim MyArray(10) As Integer ' Defining the initial 
' dimensions
' ... 
ReDim Preserve MyArray(20) As Integer ' Increase in 
' data field, while
' retaining content

在使用 Preserve 时,请确保维数和变量类型保持不变。

Template:Documentation/Note

如果将 ReDimPreserve 一起使用,则必须使用原始数据字段声明中指定的同一数据类型。

Content on this page is licensed under the Public Documentation License (PDL).
Personal tools