vb程序调试_第1页
vb程序调试_第2页
vb程序调试_第3页
vb程序调试_第4页
vb程序调试_第5页
已阅读5页,还剩4页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

程序调试假设我们要开发这样的一个排序程序:首先要求用户在Text1中输入一整数,点击“添加”按钮后将该整数添加到“初始序列”List1中,如此多次后,再点击“排序”按钮,在List2中显示排序结果,我们期望的运行结果如图63所示。图63 期望的程序运行结果要求:(1)按图64进行界面设计图64 排序程序的界面设计(2)根据如下所给程序代码进行程序调试Private Sub Command1_Click() List1.AddItem Text.TextEnd Sub排序按钮的Click事件Private Sub Command2_Click() Dim i, j As Integer 定义数组,以List1的项目个数为数组维数 Dim strList(List1.ListCount) As Integer 定义中间临时变量,用于数据交换 Dim strTmp As Integer 将List1中的项目导入到strList数组中 For i = 0 To List1.ListCount strList(i) = List1.List(i) Next i 按“冒泡”算法完成排序工作 For i = 0 To UBound(strList) For j = i + 1 To UBound(strList) If strList(i) strList(j) Then strTmp = strList(i) strList(i) = strList(j) strList(j) = strTmp End If Next j Next i 将排序结果输出到List2中 For i = 0 To UBound(strList) List2.AddItem strList(i) Next iEnd Sub(3)运行程序,在Text1文本框中输入一个整数,比如1,然后点击“添加”按钮,此时会出现如图65所示的错误提示。图65 实时错误(4)点击“调试”按钮,进入中断模式,VB编译器将自动标识出引发错误的语句行,如图66所示窗体。图66 自动定位引发错误的语句行(5)分析错误原因,很容易发现该行语句的正确写法应该是: List1.AddItem Text1.Text(6)修改错误后,按F5键继续执行程序,将出现如图67所示界面。图67排序程序运行界面(5)在上述界面上依次输入以下整数序列“21,9,8,6”后,将出现如图68所示界面。图68 输入初始序列后的界面(6)点击“排序”按钮后,又出现如图69所示的运行错误。图69 编译错误(7)点击“确定”按钮后,再次进入中断模式,编译器以加重的形式指出了引发错误的位置,如图610所示。引发错误的位置图610 以加重显示的方式定位错误(8)分析图69所示的错误提示“要求常数表达式”后,发现引用错误的原因是不能用变量作为数组的下标,即下列数组声明语句不符合VB语法约定:Dim strList(List1.ListCount) As Integer为此我们做如下选择,即采用动态数组声明的方法Dim strList() As IntegerReDim strList(List1.ListCount) As Integer(9)选择完成后,按F5键继续执行,又会出现如图611所示的错误提示。图611类型不匹配错误提示(10)点击“调试”按钮后,错误定位如图612所示。图612 类型不匹配错误定位(11)分析错误原因发现,我们将数组strList()声明为Integer数据类型,而List1.List()表示的是字符型数据,VB无法进行自动类型转换,因此我们只能通过Val函数进行转换: strList(i) = Val(List1.List(i)(12)按F5键继续,程序成功运行,出现如图611所示界面。这说明语法错误已基本排除了。但是观查运行结果,发现“排序结果”序列中多出了一个数值0。这种结果并不是我们期望的。图611 有问题的运行结果(13)关闭程序,重新运行,仍然出现图611的问题,这说明程序中存在逻辑问题,需要进一步调试。(14)设置断点,分析逻辑错误。用鼠标点击如图612所示位置设置断点图612 设置断点(15)按F5键运行程序并输入一组整数,比如“5,4,3,2”。点击“排序”按钮后,程序将进入中断模式,出现如图613所示界面。程序在此处中断图613 程序遇到断点(16)在VB集成环境的“立即”窗口中,使用“?”打印strList数组的上界和相关的值,如图614所示。当然也可以使用Print、Debug.Print命令,它们等效于?。图614 在“立即”窗中观查变量的值(17)仔细分析不难发现,List1.ListCount的最大值是4,说明数字序列中共有4个数,即“5,4,3,2”。但是List1.List()的下标是从0开始的,下标最大值应该为3,即:List1.ListCount 1为些,我们需要选择strList()数组的上界和循环次数。 个性数组声明 ReDim strList(List1.ListCount - 1) As Integer 修改循环次数 For i = 0 To List1.ListCount -

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论