TC官方合作论坛

 找回密码
 立即注册
查看: 2236|回复: 12
打印 上一主题 下一主题

[问题] 关于数组调用越界的问题

[复制链接]
跳转到指定楼层
楼主
发表于 2012-7-18 16:50:26 | 只看该作者 回帖奖励 |正序浏览 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
例子1:
string a1,a2,a3,a4,a5,a6
int bta1,bta2,bta3
string【】 io = string【2】
string ip="1,2,2,3,4,6,7,8,09,3,1,5"
bool ffgg = str.split(ip,",",io)
if(ffgg)
help.messagebox("0")
a1=io【0】
help.messagebox("1")
a2=io【1】
help.messagebox("2")
a3=io【2】
help.messagebox("3")
a4=io【3】
help.messagebox("4")
a5=io【4】
array.size(io,bta1,bta2,bta3)
help.messagebox(convert.inttostr(bta1))
endif
数组定义过小并不会造成数组越界- -!(分割后会自动重新定义数组的下标?)
例子2.
string a1,a2,a3,a4,a5,a6
int bta1,bta2,bta3
string[] io = string【9】
string ip="1,2"
bool ffgg = str.split(ip,",",io)
if(ffgg)
help.messagebox("0")
a1=io【0】
help.messagebox("1")
a2=io【1】
help.messagebox("2")
a3=io【2】
help.messagebox("3")
a4=io【3】
help.messagebox("4")
a5=io【4】
array.size(io,bta1,bta2,bta3)
help.messagebox(convert.inttostr(bta1))
endif
如果数组调用的足够大,但是还是出现了越界0 0!

(针对上述情况)看来定义数组大小并不会影响数组调用越界,只有当对数组进行赋值时才会弹出越界
针对上述越界应该怎么样写?
string a1,a2,a3,a4,a5,a6
int bta1,bta2,bta3
string{} io = string【9】
string ip="1,2"
bool ffgg = str.split(ip,",",io)

if(ffgg)///当然先要分割成功 - -!然后判断数组大小
array.size(io,bta1,bta2,bta3)
if(bta>=3)////一定要把你赋值的最后一个数组{减一}!
help.messagebox("0")
a1=io【0】
help.messagebox("1")
a2=io【1】
help.messagebox("2")
a3=io【2】
help.messagebox("3")
a4=io【3】
help.messagebox("4")
a5=io【4】
help.messagebox(convert.inttostr(bta1))
endif
endif
这样就不出越界了-0 0!



回复

使用道具 举报

13#
发表于 2012-7-18 18:39:45 | 只看该作者
回复 12楼hyg1393040的帖子

可以传图啊,点那个高级编辑器
回复 支持 反对

使用道具 举报

12#
 楼主| 发表于 2012-7-18 18:38:18 | 只看该作者
因为逗号是个很小的东西,大漠的ocr就算是1.0的相似度,碰到到了文字之类也很容易识别成逗号!(在读取坐标前判断是否可以读取坐标,如果可以的话读取!)在判断可以读取坐标后,和在读取坐标时,这段时间内出现了意外 0 0?导致读取到了文字- -!那就完蛋了- -!(我确实碰到了这情况)
因为str.split无论如何获取的数组长度都是1就无法通过数组长度来判断是否出错了- -!
论坛又上传不了图片了?

回复 支持 反对

使用道具 举报

11#
 楼主| 发表于 2012-7-18 18:19:07 | 只看该作者
回复 10楼陌上青衣。的帖子

因为逗号是个很小的东西,orc狠容易识别到,如果识别错误,只识别到一个逗号的话还是会出现数组越界- -!
回复 支持 反对

使用道具 举报

10#
发表于 2012-7-18 18:13:27 | 只看该作者
回复 3楼陌上青衣。的帖子

数组分割后,数组最小为1,- -?那样的话识别坐标的话还是容易出现问题啊- -? 因为坐标就一个"逗号分隔符"!如果

hyg1393040 发表于 2012-7-18 17:57:39

怎么会, 做字库的时候是1-9还有逗号","
比如
识别出来的就是  : 89,137


字符串分割 逗号,

x=分割返回[0]
y=分割返回[1]
回复 支持 反对

使用道具 举报

9#
发表于 2012-7-18 18:05:06 | 只看该作者
哈哈,事实证明,数组大小是1
回复 支持 反对

使用道具 举报

8#
发表于 2012-7-18 17:59:04 | 只看该作者
回复 6楼hyg1393040的帖子

按道理是3个空字符.
回复 支持 反对

使用道具 举报

7#
 楼主| 发表于 2012-7-18 17:57:39 | 只看该作者
回复 3楼陌上青衣。的帖子

数组分割后,数组最小为1,- -?那样的话识别坐标的话还是容易出现问题啊- -? 因为坐标就一个"逗号分隔符"!如果
ocr识别到的坐标为"1,"那么给y赋值的时候还是会爆出数组调用越界啊- -!
回复 支持 反对

使用道具 举报

6#
 楼主| 发表于 2012-7-18 17:52:55 | 只看该作者
回复 3楼陌上青衣。的帖子

bool fga=str.split(",,",",",sz)
array.size(sz,c1)
数组长度为1- -?
回复 支持 反对

使用道具 举报

5#
发表于 2012-7-18 17:45:34 | 只看该作者
分割的方法会 释放掉以前的数组大小,并重新分配数组的大小!

不管是分割还是 数组返回值,TC都会做这样的处理! 理解了就好!
回复 支持 反对

使用道具 举报

*滑动验证:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

站长推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18043773号

GMT+8, 2025-9-19 05:01 , Processed in 0.119279 second(s), 25 queries .

Powered by 海安天坑软件科技有限公司

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表