Int32解析没有在asp中找到对象

时间:2014-11-20 19:56:06

标签: asp-classic

我有以下asp文件:

<H3>test file</H3>
<%
s = "1"
a = Int32.Parse(s)
%>

我收到以下错误:

test file
Microsoft VBScript runtime error '800a01a8'
Object required: ''
/ignore/testInt32.asp, line 4

我怀疑我错过了一个包含,但我找不到任何包含include的示例。

2 个答案:

答案 0 :(得分:1)

你确定你使用的是经典的asp。我看了这个,因为我虽然

Int32.Parse()

有点奇怪。据我所知,这是一个仅限ASP.NET的功能。对于经典的asp你应该使用

CInt()

编辑:想稍微更新我的回答。虽然上面的代码行在您的示例中没有任何问题,但为了确保代码与原始代码完全匹配,您应该使用

CLng()

CLng将在与Int32相同的~200万之后溢出。另一方面,CInt将在~30k后溢出。无论哪种方式对于经典的asp,你都应该使用其中的一种。

答案 1 :(得分:1)

为什么会出现Object Required错误?

问题在于您将对象与混合使用,其中开箱即用的经典ASP(默认情况下为)不知道。

包含行号的事实应该很快导致问题的原因。

Microsoft VBScript runtime error '800a01a8'
Object required: ''
/ignore/testInt32.asp, line 4 
第4行的

将是;

a = Int32.Parse(s)

发生了一个对象错误,因为就{VBScript而言} Int32不是有效的“对象引用”。没有名为Int32的内置对象,并且没有使用类似代码的Int32对象引用的实例化;

Set Int32 = Server.CreateObject("TheObjectsProgID")


解决方案

如果要将VBScript中的Long数据类型解析为@KHeaney has suggested,那么您应该使用

a = CLng(s)


VBScript是无类型的,因此检查变量

请注意,如果s的值不是有效数值,则转换将失败,您将收到

Microsoft VBScript runtime error '0x800a000d'
Type mismatch: 'CLng'

有多种方法可以解决这个问题,包括使用Val()将非数字转换作为0返回(这可能很危险)。另一种方法是使用类似的东西预先检查值

If IsNumeric(s) Then a = CLng(s) Else a = 0

您不必设置a = 0这可以是任何作业a = ""也是可能的,事实是检查这样的变量可以让您更好地控制结果。


有用的链接