[RETO/FAKE] Adivinador de MsgBox

Iniciado por Psyke1, 2 Octubre 2012, 20:51 PM

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

Psyke1

A ver quien hace una función que devuelva true si en el código de vb introducido se ejecutará un MsgBox o un Print con "Hola Mundo".

Estructura:
Private Function AdivinarMsgBox(ByVal sVBcode As String) As Boolean

Ejemplo de llamadas:

TRUE

Private Form Load()
  If 1<4 Then
     Msgbox "Hola Mundo"
  End If
End Sub


FALSE

Private Form Load()
     'Msgbox "Hola Mundo"
End Sub


TRUE

Private Form Load()
     Me.Print "Hola Mundo"
End Sub


FALSE

Private Form Load()
Dim a As Long, b As Long
  a=23
  b=234
 
  If a>b and 234>45634 Then
  if "asd" = "aasdsd" then
     Msgbox "Hola Mundo"
  end if
  End If
End Sub


Vale todo!

Suerte!

Karcrack

#1
Deberías especificar más que puede entrar por sVBcode... ¿Es código encapsulado en una función? ¿Es una función sin cerrar como tus ejemplos? ¿Puede ser cualquier cosa?...

Dime que resultado daría cada bloque:


Private lala()
Debug.Print "Test"
  If 1<4 Then
     Msgbox "Hola Mundo"
  End If




Private sub lala()
  If True Then
     Msgbox "Hola" + " Mundo"
  End If
End Sub


Debug.Print "Hola";
Debug.Print " Mundo"




Dim s as String
s = "Hola Mundo"
MsgBox s


Deberías especificar muchísimo más todos esos aspectos, y aún así quedarían aspectos abiertos que dejan "hacer trampas". Un reto con un planteamiento tan vago se puede abordar según te dé la gana :xD

Creo entender que pides que se haga un sencillo interprete que siga una lógica simple de comparaciones... pero es sólo mi presentimiento.

Saludos >:D

BlackZeroX

¿Un parse?... mejor un simple instr()... pero veo que deseas que evaluemos la sentencia... eso es algo mas complejo... se tendría que crear un modulo para verificar el LÉXICO, SINTÁCTICO, SEMÁNTICO para generar un Core y a final de cuentas reproducir una pequeña VM para evaluar cada instrucción, es un royo.

Dulces Lunas!¡.
The Dark Shadow is my passion.

Karcrack

#3
@BlackZeroX: Conociendo a Psyke1 debe estar usando el Eval() de vbscript cargado como objeto para evaluar todo el código. :xD

Psyke1

#4
Jajajajajajaja. :laugh:

Podéis olvidar el reto, el caso es que un amigo me dijo que era TOTALMENTE IMPOSIBLE crear una función que verifique si un código ejecutará un un print o un MsgBox (le es indiferente) con "Hola Mundo".

Yo creo que es posible... :rolleyes:
Al menos lo del print, con Eval() y Instr() se podría solucionar.




Pero explicó mal el reto, lo que me quería plantear era esto (primera página):
http://es.scribd.com/doc/12929250/Indecidibilidad

El cual, obviamente, sí es imposible. :silbar:

DoEvents! :P

BlackZeroX

@Karcrack: Si también pensé que por esos rumbos iba...

@Psyke1: No creo que sea IMPOSIBLE como dice tu amigo, mejor dicho seria COMPLEJO ya que se tiene que SIMULAR un código en un ambiente virtual llamando a la API respectiva (estilo hook); lo mismo puede aplicar tambien al CScript de vb6 mas en especifico la que llame a un MSGBox...

Dulces Lunas!¡.
The Dark Shadow is my passion.