Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Ejecutar código delphi (https://www.clubdelphi.com/foros/showthread.php?t=91381)

carlosw1978 22-01-2017 09:42:58

Ejecutar código delphi
 
Un cordial saludo a la comunidad; existe la posibilidad de ejecutar un código, función, procedimiento, comando, etc. Almacenado en una variable de tipo String o si lo escribo en un Memo y poder ejecutar lo que está escrito en el memo, ejemplo:

var
Msg: String;

(Deseo que se ejecute lo que está dentro de la variable Msg)

Msg := 'MessageDlg('Mensaje prueba', mtInformatio, [mbOk], 0);';

O si escribiera el mismo código de un form con memo y un botón ejecutar.

avmm2004 22-01-2017 15:05:07

Hola, date cuenta que eso es un string..... un texto. El compilador no compila los textos ... son strings. Por lo tanto que va a ejecutar ?.

La unica forma sería utilizar pascal script y compilarlo previo a su ejecución enviarlo ... compilarlo ... y ejecutarlo.

Al González 22-01-2017 17:41:23

Aunque también se puede automatizar al propio Delphi para que tome un texto, forme un archivo .dpr con él, lo compile y ejecute. Lo cual hace necesario instalar el compilador de Delphi en el equipo donde se llevará a cabo la operación, claro está.

AgustinOrtu 22-01-2017 18:23:06

No creo que un lenguaje compilado sea una buena idea para este tipo de cosas. Es preferible usar algo como Python. Delphi simplemente fue concebido para otra cosa.

Solo por curiosidad, que es exactamente lo que querés lograr? Quizá haya otra solución

Nasca 22-01-2017 20:32:21

Yo he usado directamente la posibilidad de añadir scripts a los informes de FastReport, pero igualmente FastScript se puede usar de forma independiente.
Lo mismo es una opción:

https://www.fast-report.com/es/product/fast-script/

Aunque supongo que hay otras opciones similares.

carlosw1978 23-01-2017 10:56:14

Gracias por responder, pero les comento que fui programador en visual FoxPro y existe una funcion que se llama execscript() tan solo escribir el código en un string dentro de la función y ejecutaba, no creo que delphi un lenguaje tan poderoso no tenga algo así debe haber una función o un procedimiento o una vcl o algo más.

Nasca 23-01-2017 11:15:06

No conozco FoxPro, pero imagino que es similar a Access y al ser una herramienta para hacer programas con bases de datos tiene lógica que tenga un sistema de interpretado de código fuente.
No es el caso de Delphi, que produce una ejecutable compilado.
Por ello es necesario usar algún componente que añada esa funcionalidad, tipo FastScript. Opciones no te van a faltar, pero me temo que ninguna que vaya en el propio Delphi de fábrica.

Casimiro Notevi 23-01-2017 11:50:10

Poder, se puede, pero sería necesario que especificaras más qué quieres hacer exactamente, porque cuanto más amplio sea, más complejo será.
Si quieres que ejecute "cualquier cosa" que pongas en el string, entonces tendrás que crear tu propio analizador de expresiones.
Seguramente hay componentes que lo hace, pero ya digo, hace falta que aclares exactamente qué necesitas.

roman 23-01-2017 15:20:56

Cita:

Empezado por carlosw1978 (Mensaje 512543)
Gracias por responder, pero les comento que fui programador en visual FoxPro y existe una funcion que se llama execscript() tan solo escribir el código en un string dentro de la función y ejecutaba, no creo que delphi un lenguaje tan poderoso no tenga algo así debe haber una función o un procedimiento o una vcl o algo más.

Como ya te han indicado, Delphi es un lenguaje compilado y la funcionalidad que comentas de FoxPro es propia de los lenguajes interpretados como el mismo FoxPro, Python, PHP, VB, etc.

Sin embargo, hay implementaciones de pascal que permiten usarlo para scripts. De lo más conocido y usado está el motor de REM Objects que es gratuito y es ampliamente usado por InnoSetup.

El motor viene en forma de paquetes que instalas en Delphi.

De todas maneras, tal como mencionó Agustín más arriba, Delphi no fue concebido para esto. Es decir, una cosa es hacer una aplicación como Inno Setup y permitir a los usuarios de ésta ampliarla con scripting, y otra cosa es basar tu desarrollo en funcionalidades tales como la ejecución de código almacenada en un texto. Normalmente, quienes buscan tal funcionalidad terminan encontrando que el lenguaje provee mejores y más elegante formas de hacer lo que quieren, y por eso, como dice master Casimiro, explica cuál es el objetivo y aí podremos orientarte mejor.

LineComment Saludos

carlosw1978 26-01-2017 10:22:16

Gracias por la sugerencia. Revisaré esa solución de REM Objects


La franja horaria es GMT +2. Ahora son las 19:25:28.

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