2012-02-17 46 views
6

Tôi đang gặp khó khăn với mã VBS sau. Nó chỉ hoạt động đôi khi, và thậm chí sau đó nó thất bại một cách nhanh chóng. Tại sao?Tại sao mã VBS này không thành công với lỗi "Loại không phù hợp: '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 

Lỗi:

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

Xin hãy giúp tôi, tôi không phải là tuyệt vời với VBS. Điều đó rất rõ ràng, bạn tôi đã giúp tôi viết điều này.

+2

tôi sẽ không có bất kỳ sự giúp đỡ, nhưng "Butt" phải là tên đau đớn nhất khả thi. Tôi chỉ cười khúc khích trong suốt thời gian tôi đang cố gọi các phương pháp trên đó. "Trong khi Butt.Busy"? Heeheeheehee. – Interrobang

+0

Vui lòng chọn tiêu đề phù hợp cho câu hỏi của bạn để thu hút mọi người quan tâm đến nó. "Bạn có thể hướng dẫn tôi qua điều này" không nói gì về câu hỏi của bạn. – deceze

+0

@Inter Kết hợp với tên "Interrobang" làm cho nó khá gợi cảm, không phải it‽ ;-P – deceze

Trả lời

5

Như bạn có thể đã biết đến bây giờ, đây là nơi mà các lỗi xảy ra

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

Và dòng mà không những điều

  1. InStr mà trả về vị trí số của sự xuất hiện đầu tiên của "> R $ "
  2. Sau đó, được thêm bằng 3 để lấy chỉ mục sau chuỗi "R$"
  3. Bây giờ Mid chia tách chuỗi St00f với chỉ số bắt đầu sau khi "R$" để chiều dài 8
  4. Sau đó Replace mất chuỗi phân chia và thay thế một sự xuất hiện của "</b>" với ""
  5. Cuối cùng CInt chuyển đổi chuỗi thành một số nguyên hay đúng hơn * Chuyển đổi mọi số tới biến thể của loại phụ Integer *

Và bạn đang gặp lỗi khi chuyển đổi CInt.

Nếu tôi ở vị trí của bạn, tôi sẽ chia dòng này bằng cách chỉ giữ một chức năng trên mỗi dòng và sau đó thử một cái gì đó giống như MsgBox cho đầu ra sau mỗi dòng và tìm thấy những gì sai với điều đó.

Khóa là biến số St00f và biến số đó giữ.
Chúc mừng Mã hóa :)

2

Các "Loại không phù hợp" lỗi chỉ ra rằng bạn thay thế (...) không trả về một chuỗi số hợp lệ:

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

Xem xét sử dụng IsNumeric() trước khi bạn áp dụng CInt ().

Các vấn đề liên quan