TC官方合作论坛

标题: 关于数组调用越界的问题 [打印本页]

作者: hyg1393040    时间: 2012-7-18 16:50
标题: 关于数组调用越界的问题
例子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!




作者: 陌上青衣。    时间: 2012-7-18 17:08
嗯,调用数组要注意下标问题,
最大下标=数组大小-1

这样就不会越界了
作者: 陌上青衣。    时间: 2012-7-18 17:20
分割后就对数组无论大小,还是值,都重新赋值了,

如果还调用前面肯定会越界
作者: hyg1393040    时间: 2012-7-18 17:39
回复 3楼陌上青衣。的帖子

最好默认出现的话是空,那样新手就更容易上手了!
作者: Abin    时间: 2012-7-18 17:45
分割的方法会 释放掉以前的数组大小,并重新分配数组的大小!

不管是分割还是 数组返回值,TC都会做这样的处理! 理解了就好!
作者: hyg1393040    时间: 2012-7-18 17:52
回复 3楼陌上青衣。的帖子

bool fga=str.split(",,",",",sz)
array.size(sz,c1)
数组长度为1- -?
作者: hyg1393040    时间: 2012-7-18 17:57
回复 3楼陌上青衣。的帖子

数组分割后,数组最小为1,- -?那样的话识别坐标的话还是容易出现问题啊- -? 因为坐标就一个"逗号分隔符"!如果
ocr识别到的坐标为"1,"那么给y赋值的时候还是会爆出数组调用越界啊- -!
作者: 陌上青衣。    时间: 2012-7-18 17:59
回复 6楼hyg1393040的帖子

按道理是3个空字符.
作者: 陌上青衣。    时间: 2012-7-18 18:05
哈哈,事实证明,数组大小是1
作者: 陌上青衣。    时间: 2012-7-18 18:13
回复 3楼陌上青衣。的帖子

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

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

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


字符串分割 逗号,

x=分割返回[0]
y=分割返回[1]

作者: hyg1393040    时间: 2012-7-18 18:19
回复 10楼陌上青衣。的帖子

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


作者: 陌上青衣。    时间: 2012-7-18 18:39
回复 12楼hyg1393040的帖子

可以传图啊,点那个高级编辑器




欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/) Powered by Discuz! X3.1