代码之家  ›  专栏  ›  技术社区  ›  ChrisA

为什么CINT(“1”)会失败?

  •  3
  • ChrisA  · 技术社区  · 16 年前

    我正在尝试在Citrix环境中部署WinForms应用程序。它在其他物理和虚拟机上已经可靠地工作了一段时间,但只有在Citrix桌面上运行应用程序时,它才会失败。

    在(SQL Server 2005)数据库的通用设置表中,我们通常将类型数据作为字符串混合,然后在运行时将其转换为适当的类型。

    例如,在varchar(50)列中的数据库上有一个“1”,它是读入的,然后类似于

    dim myNumericVariable as integer = Cint(dr.Item(columnName))
    

    (其中dr是从ado.net输出的数据行)。

    抛出异常中的消息说:

    Conversion from string "1" to type 'integer' is not valid
    

    这种故障在整个应用程序中都会发生,但只在Citrix环境中发生。在我们所有的其他环境中,它运行良好,但我不知道它是Citrix这一事实是否只是侥幸,还有其他一些潜在的原因。

    它是一个vb.net应用程序,.net 2.0,严格和明确的两者都在,为x86编译。它在xp sp3,也就是windows 2003服务器x64上工作得很好。

    我完全不明白这一点——我已经到处找了找,没有发现任何关于我为什么看到这种行为的暗示。我非常感谢你的建议。如果您需要有关环境或应用程序构建方式的更多信息,我会很乐意编辑这个问题。提前谢谢……

    2 回复  |  直到 9 年前
        1
  •  4
  •   James Thorpe    9 年前

    这是一个 known bug 希望他们能解决。

        2
  •  0
  •   Christian Nunciato    16 年前

    是的,我在32位Vista笔记本电脑上也没有看到任何错误,所以很难说。

    也许你可以试试integer.parse()?

    Dim yourVar as Integer = Integer.Parse(dr.Item("YourColName").toString())