我有以下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的示例。
答案 0 :(得分:1)
你确定你使用的是经典的asp。我看了这个,因为我虽然
Int32.Parse()
有点奇怪。据我所知,这是一个仅限ASP.NET的功能。对于经典的asp你应该使用
CInt()
编辑:想稍微更新我的回答。虽然上面的代码行在您的示例中没有任何问题,但为了确保代码与原始代码完全匹配,您应该使用
CLng()
CLng将在与Int32相同的~200万之后溢出。另一方面,CInt将在~30k后溢出。无论哪种方式对于经典的asp,你都应该使用其中的一种。
答案 1 :(得分:1)
Object Required
错误?问题在于您将asp.net对象与asp-classic混合使用,其中开箱即用的经典ASP(默认情况下为vbscript)不知道。
包含行号的事实应该很快导致问题的原因。
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)
请注意,如果s
的值不是有效数值,则转换将失败,您将收到
Microsoft VBScript runtime error '0x800a000d' Type mismatch: 'CLng'
有多种方法可以解决这个问题,包括使用Val()
将非数字转换作为0
返回(这可能很危险)。另一种方法是使用类似的东西预先检查值
If IsNumeric(s) Then a = CLng(s) Else a = 0
您不必设置a = 0
这可以是任何作业a = ""
也是可能的,事实是检查这样的变量可以让您更好地控制结果。