TC官方合作论坛
标题:
对TC中变量的自动转换类型功能的一些想法
[打印本页]
作者:
江风影
时间:
2014-7-15 21:22
标题:
对TC中变量的自动转换类型功能的一些想法
本帖最后由 江风影 于 2014-7-16 07:28 编辑
我是一个TC新手,目前在学习中,在学习和调试程序中,在这段时间的测试程序中发现一个问题,就是常出现数据类型出错的提示,如下图
[attach]16555[/attach]
但如果停止软件再运行,出错点又不存在了,有时运行几个小时又出现一个,有时在这个行号,有时在其它行号,让人防不胜防,无从下手。
没办法,通过长时间的调试、观察和研究,我个人发现,可能是TC中变量的自动转换类型功能的原因,当然,主要原因还是本人程序时没有考虑到类型变化原因造成的,
但因为TC中的变量的自动转换,让这样的隐患深深的起来了,可能大家不理解,我把我写的部分程序载下来给大家说明一下
1 等级=0
2 I=个数-1
3 循环(助手.全局开关读(类型.转整型(下标), "任务开关")=="1")
4 如果(I<0)
5 跳出
6 如果结束
7 字符串.分割(位置数组[I],"|",座标数组)
8 如果(数据类型.整形(座标数组[0])<等级||等级==0)
9 等级=座标数组[0],intY=座标数组[1]
10 如果结束
11 I--
2 循环结束
上图提示出错的就是第8行
位置数组是前面处理好的数据数组,循环里,第一次变量【等级】为整形,那么座标数组【0】中的数据就会赋值给变量【等级】,但因为座标数组【0】是位置数组里一个字符串进行分割的,
那么【等级】也就成为了字符型,那么第二次循环里,第8行就应该出错,因为这里【数据类型.整形(座标数组[0]】定义了为整形,【等级】却成了字符型,但这时,TC中的TC中的变量的自动转换功能生效了,所以程序调试就通过了,但运行几个小时或因为不可知的原因,当TC中的变量的自动转换没起作用,自然就会出错提示,而且我是多开测试的,一出错就3开窗口全提示这地方出错,但我也不知道Tc哪时好哪时坏,象这样的类式情况还有不少,但更蛋痛的是有时如这样的程序也会提示类型出错
线程.进入临界区(公共区数组[下标])
dm_J[下标].KeyPressChar("Esc")
【下标】是传参,一级级传过来,也不可能修改或变化,只会调用,没办法,应该来说最开头的定义为整形就不会变,但没办法,全部来个手工定义为【类型.转整形(下标)】
所以我个人认为这个变量的自动转换类型功能对什么都不懂的小白来说开始是容易上手,但后来反而会成为最大的隐患,出错后让你无所适从,就如自动档的汽车虽然易学,但总没手动档操作上更灵活。
综上所述,个人认为,变量的类型定义还是不可缺少的,也许有人说,你可以每次用变量时就定义 一下,但这样一方面会增加程序体的观感,另一方面也会大大增加程序多余代码,起码当我定义一个错的类型时,运行就会知道,而不是把这个炸弹埋起来,还有人说,还不是你的水平太低,考虑的不全面,我想如果我真的水平提高了新的高度,也许,TC在我眼里,只能是新手的试车而已,只能当玩具不能成大器,想用也不管用,可能还有人说,TC就是新人的工具,大师的玩具,那么,不知道一个只能当幼儿园的学校有多少人会记得,就算记得也只是当时的时光,而不是学校
所以,
建议TC中取消变量的类型自动转换,或加个开关语句,在自动转换和手动定义中选择
以上的想法只是我这段时间的一点总结,也许不对,也希望有大神指出来让我学习学习,
作者:
b44412545
时间:
2014-7-15 21:40
按键里可以这样
A="2"
B=2
A=A+0//转换整数
B=B+"0"//转换字符串
作者:
一只熊
时间:
2014-7-16 09:12
b44412545 发表于 2014-7-15 21:40
按键里可以这样
A="2"
B=2
tc一样可以吧,问题是遇到空的时候tc不会处理
作者:
江风影
时间:
2014-7-16 11:31
这个变量空值的情况有时是"",有时会成为null,这也是因为变量类型自动转换的原因,因为如果是整形就null,如果是字符型就是"",如果你没手工定义,是""还是null就只要看TC的心情了
作者:
milai5201
时间:
2014-7-16 12:54
TC的变量申明相对于其他编程语言已经很简单了,取消变量类型转换是不可能的。几千行代码也不多,认真点检查下吧
数据类型过不了关是硬伤
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1