Como ejecutar código almacenado en una base de datos
Hola amigos, tal como les planteo en el título de este mensaje, estoy buscando la forma de poder ejecutar código que, previamente, fué almacenado en un campo de texto de una base de datos. Ustedes se preguntarán ¿para que hacer esto?, bueno el tema es así, necesito crear unos listados utilizando directamente el objeto printer, y quisiera almacenar todas las instrucciones necesarias para armar dicho listado en un campo de una base de datos, luego cuando necesite ese listado, recupero el código de la base de datos, y aqui esta mi problema, ¿como lo ejecuto, si es que hay alguna forma?.
Espero haber transmitido adecuadamente mi duda y quedo a la espera de alguna sabia respuesta. |
¡Muy interesante pregunta...!;) pero analizandola un poco me parece muy dificil lograrlo, ya que como todos sabemos todo código de delphi es compilado y linkeado por el compilador de manera que cuando tu aplicacion (archivo.EXE) quiera poder convertir (compilar) las instrucciones recuperadas de la base de dato pues será necesario tener el compilador de delphi para poder compilar y ejecutar dichas lineas de código.;)
De todas formas te sugiero (personalmente) que el problema de tu listado lo resuelva de otro modo si es posible.;) Saludos...:) |
Hola
Pues me atrevería a decir, depende. Si es SQL, se puede. Si es codigo que tenga forma de ejecutarse dentro de otro proceso como una funcion, se puede. Creo que depende de a que se llama codigo. Saludos |
Cita:
saludos...:) |
Hola
Creo que por codigo dice: elementos de configuracion::cool: Cita:
Saludos |
gracias por los post, aclaro un poquito el tema, lo que necesitaría es poder meter todo el código necesario para construir el listado, a continuación, pongo unas cuantas líneas demostrativas:
lo que busco es meter este código dentro de un campo tipo blob, por ejemplo, y luego, desde mi aplicación, levantar el registro correspondiente, acceder a dicho campo blob, tomar el texto de allí dentro y ejecutarlo. Si se pudiera hacer esto, podriamos alimentar de listados a un sistema simplemente con enviarle, mediante cualquier forma, el registro de datos, campo blob incluido y listo, tendríamos activo un nuevo listado. Obviamente, antes se debería aseguar que el código está libre de errores. |
un comentario mas, se que esto se puede hacer en otros lenguajes, tales como C#, mediante una técnica conocida como reflexion, de ahí que tengo esta inquietud por resolver esto de esta forma peeeero, con Delphi. Si se les ocurre otra idea que funcione mas o menos parecido a lo que busco, también les agradeceré cualquier propuesta.
|
Hola
No se de reflexion, pero lo logico es pedir los datos no el codigo completo: Todo esto con sql por supuesto. Saludos |
Hola
Ahora: Para hacer algo asi yo lo haria con un archivo INI ya que modificarlo seria muy sencillo sin tener que meterse a la BD. Saludos |
Bueno yo conozco un lenguaje script llamado fastscript que permite que le des una instancia de un objeto de delphi (cualquier clase) y puedes hacer cualquier cosa con el objeto en tiempo de ejecucion mediante el lenguaje script, no se si eso te serviria, puedes programar con pascalscript vbscript y jscript, el componente es de paga...
|
Cita:
Para hacer algo similar en Delphi tendrías que tener el codigo antes mencionado compilado, cargarlo en memoria y ejecutarlo. Esto, en tiempos del MS-DOS no era ningún problema. Actualmente, no tengo nada claro que se pueda hacer, debido a los sistemas de protección de memoria de los micros x86 (la memoria puede ser de datos o de programa. Si es memoria de datos, no se puede ejecutar, y si es memoria de programa, no se pueje modificar). Lo más simple que puedes hacer es usar lo que te dice JoseAntonio, o sea, un lenguaje de script interpretado, y guardar tus scripts en la base de datos. Saludos, Marc |
Cita:
|
Puesto que Deplhi no es un lenguaje interpretado, como otros, yo me inclinaría por lo que comenta JoseAntonio. Revisar algun paquete que permita Scripting en Delphi.
|
Hay un componente, no sé si en las Jedi o en las RX que te permite escribir código y ejecutarlo. Además trae ejemplos.
Voy a ver si lo encuentro y te puedo dar más información. Saludos |
jvcl\examples\RaLib\RaInterpreter\samples de las Jedi
Yo tengo los ejemplos en el siguiente directorio de los ejemplos. Me parece super interesante, y puede que te valga. Saludos |
muchas gracias a todos por los diferentes comentarios, voy a investigar un poco este componente Jedi para ver si lo puedo acomodar a mis requerimientos.
|
La franja horaria es GMT +2. Ahora son las 20:07:46. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi