Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Lio con Procedures!!! (https://www.clubdelphi.com/foros/showthread.php?t=5187)

diegofhernando 12-11-2003 15:02:47

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:cool:

delphi.com.ar 12-11-2003 15:10:22

Código:

procedure ProcA;
begin
  ....
  if EjecutaProcB Then
  begin
    ProcB;
    Exit; {Sale del ProcA}
  end;
  ....
end;

procedure ProcB;
begin
  ....
end;


¿¿Algo Asi??

diegofhernando 12-11-2003 15:20:53

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.

delphi.com.ar 12-11-2003 15:26:21

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!

diegofhernando 12-11-2003 15:38:58

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;

delphi.com.ar 12-11-2003 15:47:44

Ahora Si... (Eso espero :D)
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!

diegofhernando 12-11-2003 15:52:29

Muy bien voy a probar lo que me dices...
Gracias por tu colaboracion. Salu2:cool:

roman 12-11-2003 16:40:39

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

diegofhernando 12-11-2003 16:54:43

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!!


La franja horaria es GMT +2. Ahora son las 19:42:15.

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