| 网站首页 | 文章中心 | 电子书下载 | 矢量图库 | 视频教程 | 素材下载 | 程序代码下载 | JS代码 | 论坛 | 
常用软件类:
|杀毒安全 |联络聊天 |网络软件 |多媒体类 |系统工具 |图形图像 |系统工具 |应用软件 |行业软件
开发设计类:
|动画制作 |图像处理 |3D设计 |操作系统 |站长学院 |网络相关 |WEB设计 |数据库类 |程序开发
常见错误和难点分析
作者:未知    文章来源:网络    点击数:    更新时间:2006-8-18
 

 

第五章  常见错误和难点分析

1Dim数组声明

有时用户为了程序的通用性,声明数组的上界用变量来表示,如下程序段:

     n=InputBox("输入数组的上界")

     Dim a(1 To n) As Integer

程序运行时将在Dim语句处显示"要求常数表达式"的出错信息。即Dim语句中声明的数组上,下界必须是常数,不能是变量。

解决程序通用的问题,一是将数组声明的很大,这样浪费一些存储空间;二是利用动态数组,将上例改变如下:

    Dim a() As Integer

     n=InputBox ("输入数组的上界")

     ReDim a(1 To n)As Integer

2.数组下标越界

引用了不存在的数组元素,即下标比数组声明时的下标范围大或小即为越界。例如,要形成有如下30项的斐波那契数列:

1,1,2,3,5,8,13,21,34,,317811514229832040

正确的程序段如下:

Dim a(1 To 30) As Long, i%

若将For i=3 To 30改为For i=1 To 30,程序运行时会显示"下标越界"的出错信息,因为开始循环时i=l,执行到循环体语句a(i)=a(i-2)+a(i-1),数组下标i-2i-1均小于下界1

同样若将上例:a(i)+a(i-2)+a(i-1) 语句改为:a(i+2)=a(i)+a(i+1)

程序运行时也会显示"下标越界"的出错信息,这时是数组下标大于上界30

3.数组维数错

数组声明时的维数与引用数组元素时的维数不一致。例如,下程序段为形成和显示3×5的矩阵:

      Dim a(3,5) As Long

              For i=1 To 3

                     For j=1 To 5

                            a(i)=i*j

                            Print a(i);"";

                     Next j

              Print

       Next i

程序运行到a(i)=i*j语句时出现"维数错误"的信息,因为在Dim声明时是二维数组,引用时的一个下标。

4Aarry函数使用问题

Aarry函数可方便地对数组整体赋值,但此时只能声明Variant的变量或仅由括号括起的动态数组。赋值后的数组大小由赋值的个数决定。

例如,要将1234567这些值赋值给数组a,下表列出了三种错误及相应正确的赋值方法。

Aarry函数表示方法

错误的Aarry函数赋值,

改正的Aarry函数赋值

Dim a(1 To 8)  a=Array(1,2,3,4,5,6,7,8)

Dim a( ) a=Array(1,2,3,4,5,6,7)

Dim a As Integer  a=Array(1,2,3,4,5,6,7)

Dim  aa=Array(1,2,3,4,5,6,7)

Dim aa()=Array(1,2,3,4,5,6,7)     

Dim  aa=Array(1,2,3,4,5,6,7)

5.如何获得数组的上界、下界

 Aarry函数可方便地对数组整体赋值,但在程序中如何获得数组的-上界、下界,以保证访问的数组元素在合法的范围内,可使用UBoundLBound函数来决定数组访问。

在上例中,若要打印a数组的各个值,可通过下面程序段实现:

For i=Lbound(A) To Ubound(A)

          Print a(i)

Next l

6.给数组赋值

VB6.0提供了可对数组整体赋值的新功能,方便了数组对数组的赋值操作。但真正使用不那么方便,有不少限制。数组赋值形式如下:数组名2=数组名1

这里的数组名2,实际上在前面的数组声明时,只能声明为Varian的变量,赋值后的数组2的大小、维数、类型同数组名1;否则,若声明成动态或静态的数组,例如:

Dim数组名2() Dim数组名2 (下标)

程序在运行到上述赋值语句时显示"不能给数组赋值"的出错信息。

上一页  [1] [2] [3] [4] 下一页


  • 上一篇文章:

  • 下一篇文章: 没有了
  • 相关文章