Ayuda Error 92 en tiempo de Ejecucion

Iniciado por mastercss, 16 Junio 2010, 21:55 PM

0 Miembros y 1 Visitante están viendo este tema.

mastercss

Estoy programando con webrowser una aplicación que automatice la construcción de unidades en un juego de navegador del estilo ogame.
El error salta en timepo de ejecución:


Error 91 en tiempo de ejecución:
Variable de tipo Object o la variable de tipo With no esta establecida.


La linea que señala el depurador es esta:

var_value.Value = Val(Text3.Text)


Código (vb) [Seleccionar]
Option Explicit
'FIXIT: Declare 'doc' con un tipo de datos de enlace en tiempo de compilación              FixIT90210ae-R1672-R1B8ZE
Dim doc As Object
'FIXIT: Declare 'var_input' con un tipo de datos de enlace en tiempo de compilación        FixIT90210ae-R1672-R1B8ZE
Dim var_input As Object
'FIXIT: Declare 'var_value' con un tipo de datos de enlace en tiempo de compilación        FixIT90210ae-R1672-R1B8ZE
Dim var_value As Object
'FIXIT: Declare 'var_but' con un tipo de datos de enlace en tiempo de compilación          FixIT90210ae-R1672-R1B8ZE
Dim var_but As Object
'FIXIT: Declare 'hangar' con un tipo de datos de enlace en tiempo de compilación           FixIT90210ae-R1672-R1B8ZE
Dim hangar As Object
Dim naves As String
Private Sub Command1_Click()
Set doc = WebBrowser1.Document
Set var_input = doc.getelementbyid("username")
var_input.Value = Text1.Text
Set var_input = doc.getelementbyid("password")
var_input.Value = Text2.Text
Set var_but = doc.getelementbyid("submit")
var_but.Click
End Sub

Private Sub Command2_Click()
Dim bucle As Long
Dim cantidad As String
For bucle = 1 To Val(Text4.Text)
WebBrowser1.Navigate "http://uni3.zagamex.com.ar/game.php?page=buildings&mode=fleet"
Set hangar = WebBrowser1.Document
Set var_value = hangar.getelementbyid(Label20.Caption)
var_value.Value = Val(Text3.Text)
Set var_but = hangar.getelementbytagname("INPUT")
'FIXIT: Declare 'result' con un tipo de datos de enlace en tiempo de compilación           FixIT90210ae-R1672-R1B8ZE
Dim result
For Each result In hangar.getelementbytagname("INPUT")
   If result.Value = "Construir" Then var_but.Click
Next
Next
End Sub

Private Sub Form_Load()
Text1.Text = ""
Text2.Text = ""
Text3.Text = ""
Text4.Text = ""
WebBrowser1.Navigate "http://uni3.zagamex.com.ar"
End Sub
Private Sub Option1_Click()
If Option1.Value = True Then Label20.Caption = "fmenge[202]"
End Sub
Private Sub Option2_Click()
If Option2.Value = True Then Label20.Caption = "fmenge[203]"
End Sub
Private Sub Option3_Click()
If Option3.Value = True Then Label20.Caption = "fmenge[204]"
End Sub
Private Sub Option4_Click()
If Option4.Value = True Then Label20.Caption = "fmenge[205]"
End Sub
Private Sub Option5_Click()
If Option5.Value = True Then Label20.Caption = "fmenge[206]"
End Sub
Private Sub Option6_Click()
If Option6.Value = True Then Label20.Caption = "fmenge[207]"
End Sub
Private Sub Option7_Click()
If Option7.Value = True Then Label20.Caption = "fmenge[208]"
End Sub
Private Sub Option8_Click()
If Option8.Value = True Then Label20.Caption = "fmenge[209]"
End Sub
Private Sub Option9_Click()
If Option9.Value = True Then Label20.Caption = "fmenge[210]"
End Sub
Private Sub Option10_Click()
If Option10.Value = True Then Label20.Caption = "fmenge[211]"
End Sub
Private Sub Option11_Click()
If Option11.Value = True Then Label20.Caption = "fmenge[212]"
End Sub
Private Sub Option12_Click()
If Option12.Value = True Then Label20.Caption = "fmenge[213]"
End Sub
Private Sub Option13_Click()
If Option13.Value = True Then Label20.Caption = "fmenge[214]"
End Sub
Private Sub Option14_Click()
If Option14.Value = True Then Label20.Caption = "fmenge[215]"
End Sub
Private Sub Option15_Click()
If Option15.Value = True Then Label20.Caption = "fmenge[216]"
End Sub



HE leido sobre el error pero no termino de entender el motivo, si me lo pudieran explicar muy simple como para tontos lo agradeceria.

Gracias de antemano y Salu2

hunter18

Parece que te falta alguna referencia no te acepta el var_value.Value como tipo object te esta obligando a agregar su referencia sea cual sea el objeto que quieres crear.

Prueba declarandolo asi Dim var_value y vb automaticamente declara el tipo correcto por otro lado lado al no declarar el tipo de dato siempre se declara como object.

mastercss

Pero fijate, lo he declrado en option explicit y nada. No entiendo el motivo pero no reconoce el objeto.  Salu2

raul338

El problema puede ser que no encuentra el tipo fmenge
  • fijate, compara si var_value esnothing antes de hacer lo que sigue

hunter18

No se que tratas de hacer pero estas seteando objetos varias veces, ademas utilizas un FIXIT: que no se que hara pero dice que el tipo de dato debe ser de "tipo de datos de enlace" por ahi debe estar el error.
Quizas haya un error en el bucle, quita el bucle principal For bucle = 1 To Val(Text4.Text) y solo ejecuta el codigo una vez como si el bucle fuera For bucle = 1 To 1
Por otro lado estas declarando un variable dentro de un bucle ahi podria estar el error.


Dim bucle As Long
Dim cantidad As String
Dim result

WebBrowser1.Navigate "http://uni3.zagamex.com.ar/game.php?page=buildings&mode=fleet"

For bucle = 1 To Val(Text4.Text)

  Set hangar = WebBrowser1.Document
  Set var_value = hangar.getelementbyid(Label20.Caption)
  var_value.Value = Val(Text3.Text)
  Set var_but = hangar.getelementbytagname("INPUT")
 
  'FIXIT: Declare 'result' con un tipo de datos de enlace en tiempo de compilación FixIT90210ae-R1672-R1B8ZE
  For Each result In hangar.getelementbytagname("INPUT")
     If result.Value = "Construir" Then var_but.Click
  Next

Next

hunter18

Cita de: raul338 en 18 Junio 2010, 18:12 PM
El problema puede ser que no encuentra el tipo fmenge
  • fijate, compara si var_value esnothing antes de hacer lo que sigue
Tambien podria ser eso que no te carga la variable prueba asi, haber si devuelve algo o si esta vacio

Set var_value = hangar.getelementbyid(Label20.Caption)
msgbox var_value
var_value.Value = Val(Text3.Text)


o directamente Set var_value = hangar.getelementbyid("fmenge[202]") haber que sale?

mastercss

Lo unico que puede pasar es esto--->set var_value=hangar.getelementbytagname(label20.caption)
imagino que puede ser el causante.

Respondiendo a hunter 18. Resulta que rellena un campo input text con el numero de tropas y las veces que quieres que se repita la accion y le da a construir. El problema esk el boton no tiene asociado ni "name" ni "id" asi que tengo que usar getelementbytagname("input") para sacar todos los elementos input de la pagina en un array. Despues utilizo for each para buscar el input que tenga como valor "Construir" y si se cumple la condicion var_but.click clicka en el boton.

El for del principio repite el proceso de construccion tantas veces como se haya establecido en el programa. Digamos que es una especi de macro web.



Salu2

mastercss

HE provado quitando el for y sigue el mismo error. Tambien he probado a que el msgbox tire el valor de la variable pero el error sigue siendo el mismo.



Salu2

abkanis

Esta desactualizado esto, pero recuerdo que ese error de debe a que el nombre o id  del elemento dentro d ela pagina de juego, se repite  2 veces,o lleva un valor de numero.