2012-02-17 16 views
6

Sono in difficoltà con il seguente codice VBS. Funziona solo a volte, e anche in questo caso fallisce rapidamente. Perché?Perché questo codice VBS ha esito negativo con un errore "Tipo non corrispondente:" 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 

Errore:

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

Please help me, io non sono così grandi con VBS. Questo è chiaro, il mio amico mi ha aiutato a scrivere questo.

+2

non sarò alcun aiuto, ma "Butt" deve essere il nome più dolorosa possibile. Vorrei solo ridere per tutto il tempo che stavo cercando di chiamare metodi su di esso. "Do While Butt.Busy"? Heeheeheehee. – Interrobang

+0

Scegli un titolo appropriato per la tua domanda per attirare l'attenzione delle persone. "Potresti farmi passare attraverso questo" non dice nulla sulla tua domanda. – deceze

+0

@Inter Quella accoppiata con il nome "Interrobang" lo rende piuttosto suggestivo, no? ;-P – deceze

risposta

5

Come forse avrete conosciuto da ora, questo è dove si verifica l'errore

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

E quella linea fa queste cose

  1. InStr che restituisce la posizione numerica della prima occorrenza di "> R $ "
  2. E poi aggiunto con 3 per ottenere l'indice dopo la stringa "R$"
  3. Ora Mid suddivide la stringa St00f con indice iniziale dopo "R$" ad una lunghezza di 8
  4. Poi Replace prende la stringa divisa e sostituisce un evento di "</b>" con ""
  5. Finalmente CInt converte la stringa in un intero o più correttamente * converte qualsiasi numero alla variante del sottotipo Intero *

E si sta ottenendo l'errore nella conversione CInt.

Se fossi al tuo posto, suddividerò questa riga per riga mantenendo solo una funzione per riga e poi proverò qualcosa come MsgBox per l'output dopo ogni riga e troverà cosa c'è che non va.

La chiave è la variabile St00f e ciò che contiene questa variabile.
Felice Coding :)

2

L'errore "Tipo non corrispondente" indica che il Replace (...) non ha restituito una stringa numerica valida:

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

Considerare l'utilizzo IsNumeric() prima di applicare CInt ().

Problemi correlati