Почему этот код VBS терпит неудачу с ошибкой" несоответствие типа: 'CInt'"?

Я испытываю трудности со следующим кодом VBS. Это срабатывает только иногда, и даже тогда быстро терпит неудачу. Почему?

Dim Butt
Set Butt = CreateObject("InternetExplorer.application")
Butt.visible = True
Butt2 = InputBox("Put the link to one hat you would like to snipe.", "Hat Selection")
Butt3 = InputBox("Enter the maximum amount of Robux you will spend on this hat.", "Maximum Payment")
Dim Proace
Set Proace = CreateObject("Microsoft.XMLHTTP")
Proace.Open "GET", "http://www.roblox.com", False
Proace.Send
Do
Do While Butt.Busy
WScript.sleep 200
Loop
St00f = CInt(Replace(Mid(St00f, (InStr(St00f, ">R$")+3), 8), "</b>", ""))
If St00f <= CInt(Butt3) Then
Butt.Navigate "javascript:WebForm_DoPostBackWithOptions(new%20WebForm_PostBackOptions(""ctl00$cphRoblox$TabbedInfo$UserSalesTab$lstItemsForResale$ctrl0$lnkBuyNow"",%20"""",%20true,%20"""",%20"""",%20false,%20true))"
Exit Do
End If
Loop
Do While Butt.Busy
WScript.sleep 200
Loop
MsgBox("Congratulations! Your snipe was successful! You sniped "&Butt2&" for "&Butt3&" Robux!")
Butt.Quit
Set Butt = Nothing
Set Proace = Nothing
WScript.Quit

ошибка:

Script:   C:UsersJohnDownloadsSingleHatSniper.vbs  
Line:     14
Char:     1
Error:    Type mismatch: 'CInt'
Code:     800A000D
Source:   Microsoft VBScript runtime error

пожалуйста, помогите мне, я не так хорош с VBS. Это ясно, мой друг помог мне написать это.

3 ответов


как вы, возможно, уже знали, здесь происходит ошибка

St00f = CInt(Replace(Mid(St00f, (InStr(St00f, ">R$")+3), 8), "</b>", ""))

и эта линия делает эти вещи

  1. InStr это возвращает числовую позицию первого вхождения ">R$"
  2. затем добавляется с 3, чтобы получить индекс после строки"R$"
  3. теперь Mid разбивает строку St00f с начальным индексом после "R$" до длины 8
  4. затем Replace принимает разделенную строку и заменяет вхождение "</b>" С ""
  5. в прошлом CInt преобразует строку в целое число или более правильно * преобразует любое число в вариант подтипа Integer*

и вы получаете ошибку при преобразовании CInt.

если бы я был на вашем месте, я разделю эту строку по строке, сохраняя только одну функцию на строку, а затем попробуйте что-то вроде MsgBox для вывода после каждой строки и найдите, что с этим не так.

ключ является переменной St00f и что эта переменная содержит.
Счастливое Кодирование:)


ошибка "несоответствие типа" указывает, что ваш Replace(...) не вернул допустимую числовую строку:

>> i = CInt("4711")
>>
>> i = CInt("999999999999")
>>
Error Number:       6
Error Description:  Overflow
>> i = CInt("no number")
>>
Error Number:       13
Error Description:  Type mismatch
>> i = CInt("")
>>
Error Number:       13
Error Description:  Type mismatch

рассмотрите возможность использования IsNumeric () перед применением CInt ().


CInt может обрабатывать между -32,768 и 32,767

используйте CLng вместо CInt

скопировал из ошибка переполнения Cint, когда значение превышает 100,000+