Visual Basic - Cargar módulos de clase en tiempo de ejecución

Life is soft - evento anual de software empresarial
 
Vista:

Cargar módulos de clase en tiempo de ejecución

Publicado por Pentarou (17 intervenciones) el 12/09/2000 00:00:00
¿Es posible cargar un módulo de clase en tiempo de ejecución? Estoy haciendo un programa que analiza el rendimiento medio de una cierta subrutina (algoritmos de ordenación), y es un incordio tener que detener la ejecución y editar el código del módulo de clase cada vez que quiero probar una optimización. Me gustaría intentar lo siguiente: que esta subrutina de ordenación se pudiera introducir directamente, en tiempo de ejecución, a través de un control tipo TextBox, RichTextBox o lo que sea; y, una vez escrita, que al pulsar un CommandButton, por ejemplo, este código escrito en el control sustituyera en el módulo de clase al anterior.
Desde luego, me gustaría abordar el problema sin tener que pasar por soluciones drásticas como emulación de código o programación a bajo nivel, cosas ambas que están demasiado lejos de mi alcance.

Gracias por adelantado.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Cargar módulos de clase en tiempo de ejecución

Publicado por Alejandro Tomé (31 intervenciones) el 13/09/2000 00:00:00
Hola.
Para poder correr cualquier código desde cualquier formulario o modulo comun o modulo de clase, debes hacer publico el procedimiento; PUBLIC hagoesto(), por ej.; si el codigo esta en un modulo de clase con nombre GENERAL, por ej, solo debes tipear desde cualquier lugar del proyecto GENERAL.hagoesto. He irá a buscar tal procedimiento.

El Señor te bendiga.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:No, no me refería a eso.

Publicado por Pentarou (17 intervenciones) el 13/09/2000 00:00:00
Gracias, Alejandro, pero no me refería a cómo invocar a una subrutina presente en un módulo de clase; sé que es declarándola como pública, y así lo hago en este proyecto. Lo que quiero hacer va bastante más allá, por lo que he ido preguntando: digamos que tengo la subrutina OrdenarArreglo() en un módulo de clase, que consista más o menos en lo siguiente:

Public Sub OrdenarArreglo()
timStart = Timer
´
´ (y aquí, el código del algoritmo de
´ ordenación que sea... BubbleSort, HeapSort, SelectSort, etc.)
´
timStop = Timer
End Sub

Pues bien, lo que quiero conseguir es lo siguiente: en el formulario principal tendría un cuadro de texto grande (multilínea, por supuesto), en el que, una vez iniciada la ejecución del programa, escribiera una versión distinta de ese algoritmo (se supone que con todas las instrucciones correctas en sintaxis y flujo, claro). Cuando hubiera escrito en este TextBox una versión distinta del código, para probarla, podría hacer clic en un CommandButton llamado "Aceptar" o "Sustituir", y el código que yo hubiera escrito en este TextBox sustituiría al que estuviera presente en la subrutina OrdenarArreglo, pasando después a llamar a esa subrutina con el nuevo código para probar los efectos de la modificación; por supuesto, todo esto sin detener la ejecución, o sea, que no me estoy refiriendo ni a editar el código en tiempo de diseño ni a cómo invocar una subrutina, esté en un módulo de clase separado o en el código del propio formulario principal.

En resumen, lo que pregunto, creo yo, es si puedo hacer un programa que se modifique a sí mismo, al menos parte de su código, en función de la entrada de nuevo código por parte del usuario en tiempo de ejecución.

Parece que la cosa es difícil, por lo que me han dicho, pero una vez conseguí algo muy similar con un viejo BASIC, a base de usar las instrucciones PEEK y POKE para localizar en la memoria el propio código del programa y entonces sustituirlo con nuevas entradas pedidas al usuario con instrucciones INPUT, también en tiempo de ejecución.

Aunque no puedas contestar mi duda, de nuevo gracias por adelantado.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar