2015-06-02 91 views
0

我有代碼解碼功能並獲得Microsoft VBScript運行時錯誤「800a000d」

Function DeCrypt(strName) 
    if strName <> "" then 
    g_KeyLocation = "m:\mysvr_src\mycart_svr.txt" 
    'g_Key = mid(ReadKeyFromFile(g_KeyLocation),1,Len(strName)) 
    g_Key="gsovjrcenzhqjxigkhuhkfmabwxuzsuexvypfohbkmhdilihfbvhgfzccckvafoazynbhyeexinfwmeaesjzhwtqyaaybvghxwyfmewamhqwygaaqcbjklyeblidcvapajwdumodndhdkaauzxqnohrgvezmznbmtfyuadkbjrdbedjwsarlqpejrzszqdlkngwfdlphnswqewdtedwensocyqcryzkxtegmarfkiycyhloatbwtcxyzdyvpwjcovvtqodlxegmzletfxpiejlomorotgnpxeybqsclioisuoixvanwndpnerpyfaudkdivpjukeualkmgdkmpfvjszpxmqzcjwrfurmkolbibhvedqlsqzbyzdhqdicjqxesbhjtrskogydnhnndjviusctgipptulmdyhfhkkvxkajkazedplpuganevendeqcvgjeyaqvugfmupexcdlyvucdumrwmapofseeqvpyopfonhfgmsmjxrmdoztsqqnk" 
    count = 1 
    while InStr(strname,"_") 
     iKeyChar = (Asc(mid(g_Key,count,1))) 
     strName = Mid(strName,2,len(strName)-1) 
     if InStr(strName,"_")-1 = -1 then 
     iStringChar = strName 
     else 
     iStringChar = Mid(strName,1,InStr(strName,"_")-1) 
     end if 
     iDeCryptChar = iKeyChar Xor iStringChar 
     strDecrypted = strDecrypted & Chr(iDeCryptChar) 
     strName = Right(strName,len(strName)-instr(strName,"_")+1) 
     count = count + 1 
    wend 
    deCrypt = strDecrypted 
    else 
    deCrypt = "" 
    end if 
End Function 

我得到了一些不錯的成績,然後停下來,告訴我這個錯誤:

Microsoft VBScript runtime error '800a000d'
Type mismatch: 'iStringChar'

錯誤在這一行:

iDeCryptChar = iKeyChar Xor iStringChar 

回答

1

該錯誤實際上是相當se LF-說明。你不能用一個字符串XOR一個整數。當然,你會得到一個類型不匹配。

更改此:

if InStr(strName,"_")-1 = -1 then 
    iStringChar = strName 
else 
    iStringChar = Mid(strName,1,InStr(strName,"_")-1) 
end if 

到這一點:

if InStr(strName,"_")-1 = -1 then 
    iStringChar = Asc(strName) 
else 
    iStringChar = Asc(Mid(strName,1,InStr(strName,"_")-1)) 
end if
相關問題