回 帖 发 新 帖 刷新版面

主题:read在循环中为什么读不出外面的数据?

dim arr$(12)
for i = 1 to 12
read arr$(i)
print arr$ (i);
next i
data a,b,c,d,e
data f,g,h,i,j

出错:OUT OF DATA
请指点出错原因,
还有data里的数据的调用原理是什么啊??
请多指教

回复列表 (共7个回复)

沙发

你的data只有10个数据
却用read读了12次数据
数据不够,也就出错了

每一次read都会按顺序读取一个data里面的元素
data可以放在主模块的任意位置

板凳

晕,这个都给搞错了,
谢谢你的回帖,
这个明白了,估计我的程序
不是在读数据上出现的问题
我在仔细查查!

3 楼

我的问题搞清楚了,
在数据跟循环匹配的情况下,是没问题!
但当循环超出数组范围的话,就算我在把循环数改正确
同样通不过编译!
必须从新把文件调入一次才能通过编译!
我没学过编译原理,我想问一下
这个数组如果越界后就不能在使用了吗??

4 楼

我不明白这一句“必须从新把文件调入一次才能通过编译!”的意思。

和C语言不同,在QB里,数组是不允许越界的。

5 楼

等于说i=1 to 10
变成 i = 1 to 11
当read a$(11)的时候出错
在把11改回10以后
还是出错.
必须关掉QB.EXE
在重新进入才能通过编译
这种情况算是怎么回事呢?
我的QQ22805715
如果可以的请加我,可能会给你添很多麻烦的
[em8]

6 楼

在出错的时候
程序运行到for的这一句停下来了,
而这个时候data都已经读完了
这个时候你怎么改,read都会出错的。

在这个时候,改完后应该按 <Shift> + <F5> 重新(从头开始)运行
用不着退出程序重新进入的。

7 楼

也就是说当出错的时候
假设 dim a$(10)
在read a$(11)中数组越界,
程序在这一行设置了一个断点
你在怎么改循环次数
他还是read a$(11)吧
按<F5>只能从断点处运行吗?

我来回复

您尚未登录,请登录后再回复。点此登录或注册