FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
||||
|
||||
Lio con Procedures!!!
Que tal foro... tengo un problemilla que sinceramente no se si se pueda corregir la verdad es que no estoy mu bien documentado al respecto, lo que deseo es llamar desde un procedmiento A a un procedimiento B, normalmente el procedimiento A espera a que termine el procedimiento B y ejecuta la siguiente linea del codigo. lo que quiero es que al realizar la llamada del procedimiento B el procedimiento A termine.
Gracias por su colaboracion. Salu2
__________________
Diego. Colombia es pasión. |
#2
|
||||
|
||||
Código:
procedure ProcA; begin .... if EjecutaProcB Then begin ProcB; Exit; {Sale del ProcA} end; .... end; procedure ProcB; begin .... end; ¿¿Algo Asi??
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#3
|
||||
|
||||
Hola, gracias por tu respuesta... especifico un poco mas... estoy desarrollando un aplicacion con los Indy, en el evento Execute del TCPServer tengo un codigo que debe mostrar un form de acuerdo a lo que reciba. El problema es que al tratar de mostrar el nuevo form pues se descompone toda la aplicacion, pero si pongo el codigo en un timer funciona perfecto algo asi:
procedure TForm1.TCPServerExecute; begin // otro codigo if comando = 'nuevo' then timer1.enabled:= true; end; procedure TForm1.Timer1Timer; begin form2.show; end; obviamente cuando se habilita el timer el procedimiento del TCPServer continua y termina pero no espera hasta que el procedimiento del timer se ejecute. Espero que comprendas lo que trato de decir y me puedas dar una mano con esto problemilla. Gracias de nuevo.
__________________
Diego. Colombia es pasión. |
#4
|
||||
|
||||
Eso es otra cosa... no estas llamando a un procedure dentro de otro, sino que estas activando un Timer que en otro hilo ejecuta tu procedure al mismo tiempo.
Porqué no trabajas con una variable Boolean, le asignas el Active a esta y cuando termina tu procedure lo activas/desactivas? Código:
procedure TForm1.TCPServerExecute; var bTimerActive: boolean; begin bTimerActive := Timer1.Active; ... if comando = 'nuevo' then bTimerActive := True; ... Timer1.Active := bTimerActive; end; Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#5
|
||||
|
||||
volvamos al inicio...
procedure A; begin if comando = 'nuevo' then begin procedure B(Parametro); exit; { como ves hasta que no termine el procedimiento B no sale el procedimiento A, esto es lo que necesito, bien sea que el procedmiento A continue su ejecucion sin esperar al procedimiento B o que termine cuando llame al procedimiento B} end; end; procedure B(Parametro); begin form2.show; end;
__________________
Diego. Colombia es pasión. |
#6
|
||||
|
||||
Ahora Si... (Eso espero )
Sin lugar a dudas vas a necesitar utilizar Theads, para crear un nuevo hilo de ejecución... Te recomiendo ver la ayuda del TThread! Saludos!
__________________
delphi.com.ar Dedique el tiempo suficiente para formular su pregunta si pretende que alguien dedique su tiempo en contestarla. |
#7
|
||||
|
||||
Muy bien voy a probar lo que me dices...
Gracias por tu colaboracion. Salu2
__________________
Diego. Colombia es pasión. |
#8
|
||||
|
||||
No entiendo.
El procedimiento B únicamente muestra un formulario y esta es una acción inmediata, es decir, el formulario se muestra y el programa continúa la ejecución normal: termina el procedimiento B y se regresa a A. Lá unica razón que veo para tener que lanzar B desde otro hilo es porque la creación del formulario sea inusitadamente larga. // Saludos |
#9
|
||||
|
||||
bueno pues tienes razon roman, pero comentaba utilizo los Indy y estoy utilizan el hilo de la aplicacion mientras se ejecutan por esta razon cualquier otro cosa que se ejecute fuera del formulario donde se genera el codigo secillamente muere!!
__________________
Diego. Colombia es pasión. |
|
|
|