主题:如何突破定义数组64K限制
小小学徒
[专家分:0] 发布于 2006-12-27 14:04:00
定义数组时,出现第7类错误,惭愧,英文帮助不懂,揣模是顶破了64K的天,如何打破64K的限制,请高手指点,急!急!急!相当于救命,谢从心生。
回复列表 (共17个回复)
沙发
zjz2001336 [专家分:190] 发布于 2006-12-27 14:51:00
把英文报错信息贴上来啊!!
板凳
冷石_jasv [专家分:1570] 发布于 2006-12-27 14:54:00
这位同学.........
遥想当年......
你居然要定义一个64K的数组? 好好珍惜DOS底下这点内存空间吧.....
你不会是想写个输入法什么的.想把整个字库都放内存里吧?
说句实话..的确有办法用上个1G的内存.....不过要是你能看懂那些程序的话.一般来说.你也不需要高手的指点了.
http://cn-dos.net/forum/viewthread.php?tid=7176&fpage=41
自己去看看这个贴
3 楼
小小学徒 [专家分:0] 发布于 2006-12-27 18:04:00
sh
4 楼
小小学徒 [专家分:0] 发布于 2006-12-27 18:58:00
感谢1楼回复,我把原文抄下(我还不会贴),敬请教悔:
An arrar element was referred to with a subscript that was outside dimensions of the array, or an element of an undimens dynamic array was accessed. check theck that the arrar is dimensioned oheck the bounds of the array.
you may also get this error if the array size exceeds 64K reduce the size of the array
ERR code:9
敬候解答,谢谢
5 楼
小小学徒 [专家分:0] 发布于 2006-12-27 19:14:00
感谢回复,只可惜您说的那个贴我搜不到,还望赐教,我定义的数组,我以为不大,
DIM h[33,510] ,叫您笑话,为了玩彩球解闷,编的,现在是编程解闷了,再次谢谢!
6 楼
zjz2001336 [专家分:190] 发布于 2006-12-27 21:06:00
看的出来,你是采用静态分配内存的哦,DOS的空间的确要珍惜啊,如果真的是越界,那你只能采用动态分配内存哦,不过,我看提示,可能还有一种解决办法你可以试试啊:把那个数组的定义多加一个,比方你要大小为M的空间你可以定义一个数组a[M+1]
7 楼
冷石_jasv [专家分:1570] 发布于 2006-12-27 21:29:00
代码9的确是数组下标越界错误。
8 楼
冷石_jasv [专家分:1570] 发布于 2006-12-27 21:29:00
代码9的确是数组下标越界错误。1. 有NEXT缺少FOR
2. 语法错误
3. 有RETURN语句无GOSUB语句
4. 超过数据区范围
5. 非法功能调用
6. 数值溢出
7. 内存溢出
8. 未定义行号
9. 数组下标越界
10. 数组重复定义
11. 被零除
12. 非法的直接命令
13. 类型不匹配
14. 字符串空间溢出
15. 字符串太长
16. 字符串式子太复杂
17. 不能继续运行
18. 未定义用户自定义函数
19. 没有RESUME语句
20. 没有错误而遇RESUME语句
21. 空
22. 遗漏预算量
23. 行缓冲区溢出
24. 设备时间
25. 设备调用失败
26. 有FOR语句无NEXT
27. 打印纸用完
28. 空
29. 有WHILE语句无WEND
30. 有WEND语句无WHILE
31. 空
32. 空
33. 空
34. 空
35. 空
36. 空
37. 空
38. 空
39. 空
40. 空
41. 空
42. 空
43. 空
44. 空
45. 空
46. 空
47. 空
48. 空
49. 空
50. FIELD溢出
51. 内部故障
52. 文件号不对
53. 文件不存在
54. 文件操作类型不对
55. 文件已打开
56. 空
57. 设备输入/输出错误
58. 文件已存在
59. 空
60. 空
61. 磁盘空间已满
62. 输入超过文件尾
63. 文件记录号错误
64. 文件名错误
65. 空
66. 文件中出现直接语句
67. 文件太多,目录项已满
68. 设备无效
69. 通讯缓冲区溢出
70. 磁盘写保护
71. 软盘未插入软驱中
72. 软盘已损坏,请换一张
73. 高级BASIC特性
74. 不能打印输出的错误信息
75. 重新命名存储磁盘
76. 文件存取路径错误
77. 路径没找到
78. 不正确DOS版本
9 楼
moz [专家分:37620] 发布于 2006-12-27 22:26:00
如果你是定义成单精度类型
DIM h(33,510)占用空间为34*510*4=69K 应该是超限了。
在DOS里,的确需要珍惜一下宝贵的内存空间。
的确要用大空间时,你可以用文件来代替处理的,只是牺牲了一点速度。
如果你没有太大的要求,我倒是有一个建议可行:
把你的数据类型定义成短整型(如果能满足使用要求的话)
dim h(33,510) as integer
或者是
dim h%(33,510)
10 楼
小小学徒 [专家分:0] 发布于 2006-12-28 09:43:00
感谢冷石君倾心回复,答谢之心无以言表,您给的问题明示单是我梦昧以求的!
感谢moz君,给我具体答复。
在此论坛我感到很温暖。
我有点体会,我需要编很多小程序,然后篡成一个大的,才是能使的,会有很多问题等我,万不得以还要麻烦各位,再次谢了。
我来回复