2012-02-17 22 views
6

Mam trudności z następującym kodem VBS. Działa tylko czasami, a nawet wtedy nie działa szybko. Czemu?Dlaczego ten kod VBS kończy się niepowodzeniem z błędem "Niezgodność typu:" CInt ""?

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 

Błąd:

Script: C:\Users\John\Downloads\SingleHatSniper.vbs 
Line:  14 
Char:  1 
Error: Type mismatch: 'CInt' 
Code:  800A000D 
Source: Microsoft VBScript runtime error 

Proszę mi pomóc, ja nie jestem aż tak wielki z VBS. To jasne, mój przyjaciel pomógł mi to napisać.

+2

I nie będzie żadnej pomocy, ale „Butt” ma być najbardziej bolesne nazwa możliwy. Po prostu chichoczę cały czas, próbując wywoływać na nim metody. "Do While Butt.Busy"? Heeheeheehee. – Interrobang

+0

Proszę wybrać odpowiedni tytuł dla swojego pytania, aby zainteresować nim ludzi. "Czy możesz mnie przez to przejść" nie mówi nic o twoim pytaniu. – deceze

+0

@Inter To w połączeniu z nazwą "Interrobang" czyni ją dość sugestywną, nie jest to ;-P – deceze

Odpowiedz

5

Jak można wiedzieć teraz, to jest, gdy wystąpi błąd

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

I że linia robi te rzeczy

  1. InStr że zwraca pozycję numeryczną pierwszego wystąpienia „> R $ "
  2. Jego następnie dodano z 3, aby uzyskać indeks po ciągu znaków "R$"
  3. Teraz Mid dzieli ciąg St00f z indeksem startowym po "R$" o długości do 8
  4. Następnie Replace wykonuje ciąg podziału i zastępuje wystąpienie "</b>" z ""
  5. W ostatniej CInt konwertuje łańcuch na liczbę całkowitą lub bardziej poprawnie * przekształca dowolny numer do wariantu podtypu Integer *

Otrzymujesz błąd podczas konwersji CInt.

Gdybym był w twoim miejscu, podzielę tę linię po linii, zachowując tylko jedną funkcję w linii, a następnie wypróbuję coś takiego jak MsgBox dla wyniku po każdej linii i znajdę w tym co jest nie tak.

Kluczem jest zmienna St00f i jaka jest ta zmienna.
Szczęśliwy Coding :)

2

"Typ niedopasowanie" błąd wskazuje, że Replace (...) nie zwróci prawidłowy ciąg liczbowy:

>> 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 

Rozważ użycie IsNumeric() przed zastosowaniem CInt ().

Powiązane problemy