【问题标题】:Classic ASP App CINT failure - twitpocalypse v2经典 ASP 应用程序 CINT 失败 - twitpocalypse v2
【发布时间】:2015-12-02 03:32:56
【问题描述】:

由于 qty 值超过了 VBScript INT 可以存储的值,我收到一条非常讨厌的错误消息(实际上是用户)...这完全是 twitpocalypse 的情况。

由于 CINT() 在这种情况下不起作用,最好的解决方法是什么?

requestqty = 40200
CInt() max = 32767

CInt(requestqty) 

编辑
CLng() 似乎可以解决问题,将所有 CInt() 更改为 CLng() 的代码有任何风险。从我在下面阅读的内容和网络上的其他内容来看,似乎没有什么理由甚至使用 CInt()。我没有编写这个特定的应用程序,也不知道为什么使用一个而不是另一个,但我宁愿不包扎这个问题并在应用程序中完全解决这个问题,这样它就不会再次发生......

【问题讨论】:

    标签: asp-classic vbscript


    【解决方案1】:

    在 VBScript 中总是使用 long 而不是 int(除非您特别想将值限制在 int 范围内)。

    使用较小类型没有性能优势,也没有存储大小优势,因为所有变量都是变体,所以所有简单类型都使用相同数量的内存。

    使用CLng 函数代替CInt 函数。

    【讨论】:

    • 有什么理由不将所有的 CInt 更改为 CLng?有什么风险吗?我没有编写应用程序,需要相当快地“修复”它......我不太接触 VBScript 和 Classic ASP,所以有点水下......
    • 您可以将所有 CInt 更改为 CLng,但随后您必须检查这些值是否在稍后的过程中被截断,例如存储在数据库中的 smallint 字段中。
    【解决方案2】:

    CLng 或 CDec 或 CDbl

    【讨论】:

    • CDec() 不是 VBScript 函数。
    【解决方案3】:

    CLng() 并使用 Long 而不是 Int?

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-09-03
      • 2012-01-06
      • 1970-01-01
      • 2014-06-03
      • 2012-12-09
      相关资源
      最近更新 更多