2012-02-17 15 views
6

Tengo problemas con el siguiente código VBS. Funciona solo algunas veces, e incluso entonces falla rápidamente. ¿Por qué?¿Por qué falla este código VBS con un error "No coinciden los tipos: '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 

error:

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

Por favor, ayúdame, no soy tan grande con EBV. Eso está claro, mi amigo me ayudó a escribir esto.

+2

no seré ningún tipo de ayuda, pero "a tope" tiene que ser el nombre más dolorosa posible. Me reía todo el tiempo que intentaba llamar métodos. "Do While Butt.Busy"? Heeheeheehee – Interrobang

+0

Elija un título adecuado para su pregunta para que la gente se interese por ella. "¿Podrías explicarme esto?" No dice nada sobre tu pregunta. – deceze

+0

@Inter El emparejado con el nombre "Interrobang" lo hace bastante sugerente, ¿no? ;-P – deceze

Respuesta

5

Como ya habrán sabido ahora, aquí es donde se produce el error

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

Y esa línea hace estas cosas

  1. InStr que devuelve la posición numérica de la primera aparición de "> R $ "
  2. Luego se agrega con 3 para obtener el índice después de la cadena "R$"
  3. Ahora Mid divide la cadena St00f con índice de inicio después de "R$" a una longitud de 8
  4. Entonces Replace toma la cadena dividida y sustituye a una ocurrencia de "</b>" con ""
  5. Por fin CInt convierte la cadena a un entero o más correctamente * convierte cualquier número a la variante del subtipo Entero *

Y aparece el error en la conversión de CInt.

Si estuviera en su casa, dividiré esta línea por línea manteniendo solo una función por línea y luego probaré algo como MsgBox para la salida después de cada línea y encontraré lo que está mal con eso.

La clave es la variable St00f y lo que esa variable contiene.
feliz :) Codificación

2

El error "No coinciden los tipos" indica que su Reemplazar (...) no devuelva una cadena numérica válida:

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

Considere el uso de IsNumeric() antes de aplicar CInt ()

Cuestiones relacionadas