在我做开发的那台电脑上,用IsNumeric来判断一个字符串是否为数字类型的时候,它可以判断"1."为数字类型.
但是到了客户的电脑上之后,这软件老是出错.
后来在客户的电脑上调试才发现,原来客户的电脑中的IsNumeric函数,把"1."识别为字符类型了!这究竟怎么回事??每台电脑中IsNumeric函数对字符的识别都存在差异吗?

解决方案 »

  1.   

    与系统的地域设置有关。在有些数字格式中,"." 不是小数点。这应该算是你的软件的一个Bug.
      

  2.   

    如果不是小数点,去掉“.”就可以了。如果是小数点,用VAL函数转换一下:Val(Text1.Text),变成纯数字。
      

  3.   

    其实呢,我是在监视一个对话框中的Edit控件
    因为是在EN_CHANGE消息中进行监视,所以当用户想输入小数,即Edit控件上正在显示"1."的时候,客户电脑就出错了
    我判断它正在输入的内容是否为数字,如果是数字,则取消处理.
    如果不是数字,则进行处理!!!!按照1楼的同志的意思,那我该怎么处理这个虫子?
    当然,我的意思是在程序中用代码处理,而不是去修改客户电脑中的区域设置
    开头我也想过把ES_NUMBER样式加入到Edit中,但是这样的话就不能拥有小数了
      

  4.   

    二楼的同志,我不是没想过
    但是我基本上是在实时监视的,如果IsNumeric中判断"1."不是数值类型的话,那后面的处理也就没用了!
      

  5.   

    这些处理都是在通知消息EN_CHANGE下执行的
    首先判断它是否为数字,如果不为数字,则设置Edit控件的文本为"0.00",接着退出消息处理程序
    如果是数字,则再判断它的小数位有多少位,如果小于等于2位,则不管它
    如果大于2位,则用Format函数对它进行保留二位小数的处理(例如1.137则Format为1.14,Format函数自己会四舍五入)现在问题来了,当客户输入"1."的时候(还没来得及输入小数),IsNumeric就已经把它判断为非数值类型,直接把Edit的文本设置为"0.00"了
      

  6.   

    EN_CHANGE ?change事件?只要内容一改变就会触发事件,当然在“1.”的时候会做出判断。
      

  7.   

    你描述这种情况可能用正则来判断比用IsNumeric要好,你可以试一下