| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1410 人关注过本帖
标题:求助下标越界问题!!
只看楼主 加入收藏
xuamao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-6-30
结帖率:0
收藏
已结贴  问题点数:20 回复次数:6 
求助下标越界问题!!
'写左断面数据
Print #2, m; " ";
For i = m To 1 Step -1
For j = 1 To 2
Print #2, Format(pjgc(i + 1, j) - pjgc(i, j), "0.000"); "";
Next j
Print #2, " ";
Next i
Print #2, ""
'写右断面数据
Print #2, n - m - 1; " ";
For i = 1 To n - m - 1
For j = 1 To 2
If j <> 1 Then
Print #2, Format(pjgc(i + (n - m - 1), j) - pjgc(i + (n - m), j), "0.000"); "";
Else
Print #2, Format(Abs(pjgc(i + (n - m - 1), j) - pjgc(i + (n - m), j)), "0.000"); "";
End If
Next j
Print #2, "";
Next i
Print #2, ""
Loop
Close #1
Close
FileName = "C:\横断面线.txt"
RichTextBox1.LoadFile FileName
Kill "c:\横断面线.txt"
End Sub
提示为文字加粗的位置
搜索更多相关主题的帖子: 越界 Print For Format Next 
2018-06-30 12:17
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
收藏
得分:20 
你贴出来的代码不是一个完整的VB事件过程,我没法调试,我凭经验猜测,
你的pjgc(1 to x,1 to 2)二维数组应该都是从1开始,当n=m时,
Print #2, Format(Abs(pjgc(i + (n - m - 1), j) - pjgc(i + (n - m), j)), "0.000"); "";就是
Print #2, Format(Abs(pjgc(0, j) - pjgc(1, j)), "0.000"); "";就会出现下标越界错误了。
纯属推测,还是要看到完整过程才能知道。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2018-06-30 13:38
xuamao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-6-30
收藏
得分:0 
Option Explicit
Dim sFind As String
'声明文件类型
Dim FileType, FiType As String


'初始化程序
Private Sub Form_Load()  '设置程序启动时的大小
Me.Height = 6000
Me.Width = 8000
End Sub
'设置编辑框的位置和大小
Private Sub Form_Resize()
On Error Resume Next '出错处理
RichTextBox1.Top = 100
RichTextBox1.Left = 2
RichTextBox1.Height = ScaleHeight - 104
RichTextBox1.Width = ScaleWidth - 4
End Sub
'打开文件
Private Sub Open_Click()
CommonDialogl.Filter = "权属文档(*.hdm) |*. hdm| 文本文档( * . txt)| * . txt| 所有文件( *.*)| *. *"
CommonDialogl.ShowOpen
RichTextBoxl.Text = "" '清空文本框FileName = CommonDialogl. FileName
RichTextBoxl.LoadFile FileName
End Sub
'CASS 横断面文件转换为纬地横断 面文件
Private Sub zhuanhuan_Click()
Dim BEGEN, LICHENG As String '定义起始标志里程变量
Dim pjd As String '定义平距、高程变量
Dim k, n, m As String '记录位 置、横断面上的总点数、左断面的测点数变量
Open CommonDialogl.FileName For Input As #1
Open "c: \横断面线.txt" For Output As #2
Do While Not EOF(1)
Input #1, BEGEN, LICHENG        ' 读入起始标志、里程、横断面数
k = Seek(l)   '记录指针位置
测算一个横断面的总点数
n = 0
Do
Line Input #1, pjd  '读入平距、高程
If Left(pjd, 5) = "BEGIN" Then Exit Do
n = n + 1
Loop While Not EOF(1)
Seek #1, k '指针回到前面
ReDim pjgc(n, 2) As Single  '定义平距、高程
数组变量
将一个断面的平距和高程数据读入到数组
For i = 1 To n
For j = 1 To 2
Input #1, pjgc(i, j)
Next j
Nexti '测算一个横断面的左点数For i= 1 To n
For j = 1 To 2
If pjgc(i, j) = 0 Then m = i - 1
Next j
Next i
'写入纬地格式
Print #2, LICHENG '写入里程桩号
'写左断面数据
Print #2, m; "";
For i = m To 1 Step -1
For j = 1 To 2
Print #2, Format(pjgc(i + 1, j) - pjgc(i, j), "0.000"); "";
Next j
Print #2, "";
Next i
Print #2, ""
'写右断面数据
Print #2, n - m - 1; "  ";
For i = 1 To n - m - 1
For j = 1 To 2
If j <> 1 Then
Print #2, Format(pjgc(i + (n - m - 1), j) - pjgc(i + (n - m), j), "0.000"); "";
Else
Print #2, Format(Abs(pjgc(i + (n - m - 1), j) - pjgc(i + (n - m), j)), "0.000"); "";
End If
Next j
Print #2, "";
Next i
Print #2, ""
Loop
Close #1
Close #2
FileName = "c: \横断面线.txt "
RichTextBoxl.LoadFile FileName
Kill "C: \横断面线.txt"
End Sub
'保存文件
Private Sub Save_Click()
CommonDialogl.Filter = " 横断面文档( *.txt)| *. txt l 所有文件( *- * )| * · * "
CommonDialogl.ShowSave
If CommonDialogl.FileName = "" Then
Exit Sub
End If
Open CommonDialogl.FileName For Output As #1
Print #1, RichTextBoxl.Text
Close #1
End Sub
2018-06-30 13:47
xuamao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-6-30
收藏
得分:0 
你好,这是完整的程序,帮我看看,二楼!感谢
2018-06-30 13:48
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
收藏
得分:0 
图片附件: 游客没有浏览图片的权限,请 登录注册

是不是这里写错了,导致n超标了,
可以加我QQ:535567066详聊。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2018-06-30 14:19
xuamao
Rank: 1
等 级:新手上路
帖 子:4
专家分:0
注 册:2018-6-30
收藏
得分:0 
哦,这个已经改了还是不行
2018-06-30 14:50
wufuzhang
Rank: 9Rank: 9Rank: 9
来 自:广州
等 级:贵宾
威 望:21
帖 子:206
专家分:1346
注 册:2017-8-9
收藏
得分:0 
ReDim pjgc(n, 2) As Single  '定义平距、高程
Print #2, Format(Abs(pjgc(i + (n - m - 1), j) - pjgc(i + (n - m), j)), "0.000"); "";
数组pjgc的上限n小于i+n-m(当i=m+1时),所以改成2*n,就不会下标越界了。

不经历千百遍的调试,怎能体会成功时那一刹那的喜悦。
2018-07-01 16:54
快速回复:求助下标越界问题!!
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.018221 second(s), 10 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved