2012-11-14 72 views
0

我通常使用PHP開發網站。但現在我不得不使用ASP Classic,因爲我的客戶已經有一個網站,那麼我必須維護網站。我已經把所有的網站移到我的新主機上。但在此代碼錯誤:經典ASP getPathName和getName錯誤

cPath=getPathName(Server.mappath(Request.ServerVariables("PATH_INFO")))

的錯誤信息是:

Microsoft VBScript運行時錯誤 '800a000d'

類型不匹配:getPathName'

撥打getName代碼時顯示一些錯誤。

請幫我,我該怎麼辦。

+0

您可以添加更多一點,例如聲明cPath的位置。 - 類型不匹配是當您嘗試將一種類型的值填充到另一種類型的變量時發生的一般錯誤。 – Rob

+2

@Robuust類型不匹配的原因在於'getPathName'是由VBScript自動創建的,但給出了Empty類型。由於他試圖將其用作函數,導致類型不匹配。腳本語言的奇蹟! –

回答

1

就我所知,傳統的ASP或VBScript不具備與PHP getPathName()getName()函數相同的功能。

我無法理解什麼是當它被賦予一個字符串,其實我不認爲它存在的getPathName()的意思,所以纔有:

cPath = Server.MapPath(Request.ServerVariables("PATH_INFO")) 

和變量將包含完整的物理當前正在執行的ASP文件的路徑。

至於getName()您可以編寫自定義功能:

Function GetOnlyName(filePath) 
    Dim slashIndex 
    slashIndex = InStrRev(filePath, "\") 
    If slashIndex<1 Then 
     slashIndex = InStrRev(filePath, "/") 
    End If 
    If slashIndex>0 Then 
     ExtractFileName = Mid(filePath, slashIndex + 1, Len(filePath) - slashIndex + 1) 
    Else 
     ExtractFileName = filePath 
    End If 
End Function 

然後使用它是這樣的:

cName = GetOnlyName(Server.MapPath(Request.ServerVariables("PATH_INFO"))) 

和變量將包含ASP文件的名稱即可。

爲了記錄在案,以避免混淆類型不匹配錯誤,總是把這個腳本的頂部:

Option Explicit 

然後總是聲明使用Dim聲明,所有的變量如上面的功能。有了這個,試圖使用getPathName會給出「變量未定義」的錯誤,這是更有意義的。