Почему этот код VBS завершается с ошибкой «Несоответствие типов:« CInt »»? - PullRequest
6 голосов
/ 17 февраля 2012

Я испытываю трудности со следующим кодом 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:\Users\John\Downloads\SingleHatSniper.vbs  
Line:     14
Char:     1
Error:    Type mismatch: 'CInt'
Code:     800A000D
Source:   Microsoft VBScript runtime error

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

Ответы [ 3 ]

5 голосов
/ 17 февраля 2012

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

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 и то, что содержит эта переменная.
Счастливое кодирование:)

2 голосов
/ 17 февраля 2012

Ошибка «Несоответствие типов» означает, что ваш 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 ().

1 голос
/ 12 ноября 2014

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...