Visual Basic 60常见错误及解决方案Word下载.docx
- 文档编号:14792285
- 上传时间:2022-10-24
- 格式:DOCX
- 页数:23
- 大小:27.75KB
Visual Basic 60常见错误及解决方案Word下载.docx
《Visual Basic 60常见错误及解决方案Word下载.docx》由会员分享,可在线阅读,更多相关《Visual Basic 60常见错误及解决方案Word下载.docx(23页珍藏版)》请在冰豆网上搜索。
⑴赋值、计算或数据类型的结果的转换太大,以致于不能在变量类型所允许的范围内表示出来。
⑵给属性的赋值超过属性能接受的最大值。
⑶试图在计算中使用一个数字,并且该数字被强制为一个整数,但是结果超过了整数的范围,例如:
DimxAsLong
x=2000*365'
错误:
溢出
VisualBasic
2
⑴赋值给足够表示值的范围的类型的变量上。
⑵确保赋值适合属性的范围。
⑶要解决这个问题,请按如下方式键入该数字:
x=CLng(2000)*365
3.内存溢出(错误7)
需要更多的内存空间,或是遇到64K段边界限制。
⑴打开了太多的、文档或资源文件。
⑵模块或过程太大了。
⑶在MicrosoftWindows标准模式下执行。
⑷在MicrosoftWindows增强方式下执行,但超出了虚拟内存的空间。
⑸一些驻留程序在运行。
⑹设备驱动程序装载的太多。
⑺Public变量超出了空间。
⑴关闭不需要的应用程序、文档或资源文件。
⑵将庞大的模块或过程分成几个。
虽然这样不能节省内存空间,但可避免64K段边界限制。
⑶按增强方式重新启动MicrosoftWindows。
⑷空出一些磁盘空间以增加虚拟内存,或至少确保有空馀的空间。
⑸减少一些驻留程序。
⑹减少一些不需要的设备驱动程序。
⑺减少Public变量的数量。
4.下标越界(错误9)
只能在定义的范围内访问数组元素和集合成员。
VisualBasic6.0常见错误及解决方案王牌8
3
⑴引用了不存在的数组元素。
⑵声明数组时没有指定元素的数目。
例如,下列的代码就会导致此错误:
DimMyArray()AsInteger
MyArray(8)=234'
导致错误9。
⑶引用了不存在的集合成员。
⑷使用速写形式的下标,结果指定了错误的元素。
⑴下标比可能下标范围大或小,或是在应用程序中这一边的数组没有指定范围。
检查数组的声明以确认其上界和下界。
若使用的是重新指定范围的数组,应使用UBound和LBound函数来决定数组访问。
如果索引指定为变量,应检查变量名的拼写。
⑵VisualBasic并不会将没有指定范围的数组自动设为0–10。
相反必须使用Dim或ReDim来指定数组中元素的数目。
⑶试着使用ForEach...Next结构代替指定元素下标。
⑷例如,当在集合上使用!
运算子时,!
自动指定了一个键。
例如object!
keyname.value和object.item(keyname).value是一样的。
在此例中,集合中如果keyname表示一个错误键,错误就会产生。
若要改进此错误,在集合对象中使用正确的键名称或索引。
5.数组长度固定或临时被锁定(错误10)
并非所有数组都可重设大小。
即使数组声明成动态,或者数组是在Variant变量中,也会被临时锁定。
⑴使用ReDim来改变固定大小数组的元素数。
例如,在下列的代码中,在NextOne过程中SomeArr接收了固定大小的数组FixedArr,然后试图调整SomeArr的大小:
SubFirstOne
DimFixedArr(25)AsInteger'
创建一个固定大小的数组并
NextOneFixedArr()'
将之传给其它过程。
EndSub
SubNextOne(SomeArr()AsInteger)
ReDimSomeArr(35)'
发生错误10。
4
...
⑵对模块层次动态数组,要重新确定大小,而某一个元素已经作为参数传给了过程。
例如,在下列的代码中,ModArray是模块层次动态数组,却将其第56个元素以按引用传给Test过程:
DimModArray()AsInteger'
创建一个模块层次动态数组。
SubAliasError()
ReDimModArray(1To73)AsInteger
TestModArray(45)'
传模块层次动态数组的元素
'
给Test过程。
SubTest(SomeIntAsInteger)
ReDimModArray(1To40)AsInteger'
错误在这里发生。
⑶赋一个值给包含数组的Variant变量,但Variant当前被锁定。
例如,如果代码使用了ForEach...Next循环,对包含数组的variant执行操作的话,在进入循环后数组将会被锁定,在循环退出后释放:
SomeArray=Array(9,8,7,6,5,4,3,2,1)
ForEachXInSomeArray
SomeArray=301'
因为数组锁定导致错误。
NextX
⑴将数组用ReDim(如果是在过程内声明数组)声明为动态的而非固定大小,或在声明时不指定元素数(如果是在模块级别中声明数组)。
⑵此例并不需要传递模块层次动态数组元素,因为在模块中所有过程都可看到它。
然而,如果传递元素,在过程内引用参数,数组会被锁定以避免内存的配置释放,因此,当过程返回时,会导致不能预测的情况出现。
⑶使用For...Next代替ForEach...Next循环来执行迭代。
当数组是ForEach...Next循环的对象时,可以读入数组,但不能写入。
5
6.除数为零(错误11)
除数为零是不允许的。
表达式的值作除数使用,但其为零。
检查在表达式中变量的拼写。
拼写错误的变量名会被当成数值变量并且初始值为零。
检查表达式中变量的前一个操作,尤其是从其他过程传送给过程的参数。
7.串空间溢出(错误14)
VisualBasic允许使用非常大的字符串。
然而,其他程序的需求和处理字符串的方法可能导致这种错误。
⑴使用的表达式为计算所创建的临时字符串,可能产生此错误。
例如,下列的代码在一些操作系统上将产生Outofstringspace的错误:
MyString="
Hello"
ForCount=1To100
MyString=MyString&
MyString
NextCount
⑵系统内存溢出,致使不能给字符串分配空间。
⑴将字符串赋值给其他名称的变量。
⑵删除不需要的应用程序以增加可用的内存空间。
8.不能执行所需的操作(错误17)
如果此操作会导致工程的当前状态无效,则操作将不能执行。
6
⑴所要求的操作不能作用在工程当前的状态。
例如,当程序正处于中断模式时,使用“引用”对话框来添加一个对工程或对象库的新引用时,就会发生此错误。
⑵试图修改正在执行的代码。
例如,试图从文件读出代码然后加到正在执行的模块中。
⑴停止执行当前的代码,然后重试此操作。
⑵虽然可以修改工程中当前并非真正执行的模块,但不能修改正在运行的模块。
如要要做这样的修改,必须停止当前正在运行的模块,再添加或修改,然后重新执行。
9.出现用户中断(错误18)
进程的中断执行是很有用的,如果不进行处理则会使应用程序中止。
用户按CTRL+BREAK或其他中断键。
在开发环境中可继续执行。
避免在运行时出现这种情况,应使用合适的方法处理此错误。
10.未发生错误而出现Resume(错误20)
Resume语句只能在错误处理程序内出现,而且只能在活动的错误处理程序中执行。
⑴将Resume语句放在错误处理程序的代码之外。
⑵代码即使没有错误也跳到了错误处理程序之中。
⑴将此语句移到错误处理程序之内,或删除它。
⑵也许拼错了行标签。
不能经过过程跳到标签,所以搜寻过程中注明错误处理程序的标签。
如果找到了重复的GoTo语句的目标标签,而不是属于OnErrorGoTo语句的目标标签的话,修改行标签使与所要的目标标签一致。
7
11.堆栈空间溢出(错误28)
堆栈是内存的一个工作区,会随着程序运行的需要而增长或缩小
⑴有太多活动的Function、Sub或Property过程调用。
⑵本地变量需要更多可用的本地变量空间。
⑶有太多定长字符串。
⑷DoEvents函数调用的嵌套太多。
⑸代码引起了事件层叠。
⑴检查过程的嵌套是否太深,尤其是递归过程,即自己调用自己的过程。
确保递归能终止,使用“调用”对话框来查看活动的过程(在堆栈上)。
⑵试着在模块级别中声明某些变量。
可以在静态过程,即在Property、Sub或Function关键字前加上Static,声明所有变量,或可以在过程内使用Static语句来声明各个Static变量。
⑶定长字符串在过程中可快速访问,比可变长度字符串使用更多堆栈空间,因为字符串数据本身要放在堆栈上。
可试着重新定义一些定长字符串成为变长字符串。
当声明一变长字符串时,只有字符串描述符(非数据本身)会放在堆栈上。
可以在没有堆栈空间的模块层次上定义字符串。
在模块层次申明变量是缺省为Public,所以在模块上所有过程皆可见到字符串。
⑷利用“调用”对话框,在堆栈上查看正在活动的过程。
⑸所谓事件层叠就是引起一个事件,此事件会调用已在堆栈上的事件过程。
事件层叠和不能中止的递归过程调用是相似的,但不太明显,因为是由VisualBasic所调用,而不是在代码中调用。
使用“调用”对话框来查看那些正在活动的过程(在堆栈上)。
12.DLL应用程序客户太多(错误47)
VisualBasic中动态链接库(DLL)一次只能容纳50个主机应用程序访问。
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- Visual Basic 60常见错误及解决方案 60 常见 错误 解决方案