Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Problemas con hilos y remobjects Pascal Script. (https://www.clubdelphi.com/foros/showthread.php?t=75671)

J.Slann 11-09-2011 18:56:01

Problemas con hilos y remobjects Pascal Script.
 
Buenas,

Estoy tratando de hacer un programa en delphi. El programa consiste en un editor de script realizado con Pascal Script, el usuario debe programar su codigo en el editor de script que posteriormente será ejecutado.

Hasta ahí todo correcto, programa funcionando y ejecutandose correctamente.

El problema surge cuando trato de dotar al programa de cierta multitarea. La idea es que el programa lanze dos scripts de programación y que ambos se ejecuten simultaneamente.

Según la poca idea que tengo de delphi, en un principio no es multitarea y por tanto no se soluciona el problema simplemente crando instancias del editor. Al probarlo, un script se ejecuta mientras que el otro esta parado hasta que el primero de ellos termina su ejecución, momento en el que continua la ejecución del otro script.

He probado también con la clase TThread pero tampoco consigo que funcione. Creo que programo correctamente los thread porque funcionan para tareas sencillas (por ejemplo, escribir en un cuadro de mensajes).

El thread lo creo con una variable de tipo TPSScript que relaciono con el TPSScript del formulario. Con el thread trato de ejecutar procedimientos del formulario del tipo. tform.ejecutarinstruccion.

¿Es posible conseguir lo que quiero con la clase TThread?

¿Es posible conseguir lo que pretendo con otras librerias parecidas a las de remobjects Pascalscript y que tengan posibilidad de ejecutarse simultaneamente?

¿Es viable lo que pretendo en Delphi? Si la respuesta es afirmativa ¿como lo puedo conseguir?

Un saludo y gracias.

Ñuño Martínez 12-09-2011 11:41:22

Cita:

Empezado por J.Slann (Mensaje 411735)
¿Es posible conseguir lo que quiero con la clase TThread?

Sí.

Cita:

Empezado por J.Slann (Mensaje 411735)
¿Es posible conseguir lo que pretendo con otras librerias parecidas a las de remobjects Pascalscript y que tengan posibilidad de ejecutarse simultaneamente?

Sí.

Cita:

Empezado por J.Slann (Mensaje 411735)
¿Es viable lo que pretendo en Delphi? Si la respuesta es afirmativa ¿como lo puedo conseguir?

Sí.

Simplemente crea dos hilos, uno por cada guión que quieras ejecutar. Ahora bien, si necesitas intercambiar información entre ambos guiones deberás diseñar cómo hacerlo. Nunca he usado PascalScript, pero supongo que en el peor de los casos puedes añadirles métodos/procedimientos/funciones que deberá llamar el guión cuando quiera enviar o recibir datos hacia y desde el otro guión. Estos métodos deberán usar propiedades "de hilo seguro" para acceder a estos datos.

J.Slann 14-10-2011 19:53:10

Hola,

He estado probando con hilos y sigo sin conseguir lo que quiero. Como me decías utilizo un hilo para cada guión, el problema viene cuando trato de ejecutar los dos a la vez. Empiezo a ejecutar el script a través del hilo, pero una vez lanzado el script este se apodera por completo de la aplicación y no consigo la simultaneidad.

Una de las cosas que se me ocurren es que: aunque se desencadene todo el proceso desde un hilo, como la clase que utilizo tiene diferentes eventos en el formulario, es que una vez que empiezan a ejecutarse esos eventos no se devuelva el control al hilo hasta que estos terminen, ¿podría ser?

¿Se puede de alguna forma meter eventos dentro de hilos de ejecución?

Ñuño Martínez 17-10-2011 21:05:34

Cita:

Empezado por J.Slann (Mensaje 415623)
Hola,

He estado probando con hilos y sigo sin conseguir lo que quiero. Como me decías utilizo un hilo para cada guión, el problema viene cuando trato de ejecutar los dos a la vez. Empiezo a ejecutar el script a través del hilo, pero una vez lanzado el script este se apodera por completo de la aplicación y no consigo la simultaneidad.

Pues algo estás haciendo mal. ¿Puedes poner el código en el que creas cada hilo y lo inicias?

J.Slann 19-11-2011 17:35:28

Efectivamente era un error mio, que no hacía las cosas como se debería.

Ya he conseguido la simultaneidad.

Gracias.


La franja horaria es GMT +2. Ahora son las 13:46:45.

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