Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

Coloboración Paypal con ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 02-06-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Cool

Supongo que estas pensando en un bucle que envia todos los faxes:

algo como:
Código:
repeat
  EnviarFax(numero);
until NoHayMasNumeros;
De esta forma, no hay manera de "esperar" si no es con un "bucle de espera".

Pero si repensas el proceso de otra forma, no habra necesidad de él y podes valerte del evento OnFinish ya mencionado.

Mi idea es:

Declaras un método que envia solamente un fax. Este se llamará EnviarSiguienteFax y tendrá la lógica para tomar el número de fax de donde lo estes sacando. Por ejemplo, si es una base de datos, simplemente se ubicará en el siguiente registro y enviará el fax. Si no hay mas fax para enviar, no hara nada y saldrá.

Luego en el evento OnFinish del componente fax simplemente llamarás a EnviarSiguienteFax.

Para iniciar el envio, vamos a hacer una rutina llamada EnviarPrimerFax, que inicializará el DataSet y luego llamará a EnviarSiguienteFax.

Quedaria algo como:

Código Delphi [-]
Procedure TForm1.EnviarSiguienteFax;

Var
  Numero : String;

Begin
  if TablaFaxes.eof Then
    Exit; //no se hace nada mas!
  //Envia el fax del registro actual:
  Numero := TablaFaxes.FieldByName('NumeroFax').AsString;
  TablaFaxes.Next;  // ubica la tabla en el siguiente registro
  EnviarFax(Numero);
end;

Procedure TForm1.FaxOnFinish;

Begin
  EnviarSiguienteFax;
end;

Procedure EnviarPrimerFax;

Begin
  TablaFaxes.Active := True;
  TablaFaxes.First;
  EnviarSiguienteFax;
End;

Hay aqui cierta recursividad indirecta. Dependerá de como el componente envie el fax si esa recursividad es real o no. Entiendo que devuelve el control a la aplicación, con lo que se liberaría el stack. Si no es asi, bastaria con cambiar el evento OnFinish para que no llame directamente a EnviarSiguienteFax, sino que se valga de un timer, por ejemplo, que sea el que genere la siguiente llamada.

Espero que la idea general te sirva de ayuda.

Hasta luego

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate

Última edición por jachguate fecha: 02-06-2004 a las 19:37:04.
Responder Con Cita
  #2  
Antiguo 02-06-2004
Avatar de roman
roman roman is offline
Moderador
 
Registrado: may 2003
Ubicación: Ciudad de México
Posts: 20.269
Poder: 10
roman Es un diamante en brutoroman Es un diamante en brutoroman Es un diamante en bruto
Hombre, aunque no diga for, while ni repeat, a fin de cuentas es un bucle:

Código:
EnviarFax->OnFinish
    ^          |
    |__________|
Responder Con Cita
  #3  
Antiguo 02-06-2004
Avatar de jachguate
jachguate jachguate is offline
Miembro
 
Registrado: may 2003
Ubicación: Guatemala
Posts: 6.254
Poder: 30
jachguate Va por buen camino
Digamos que es un bucle "indirecto"...

Entiendo que lo que ocurre es que el componente mencionado funciona de manera Asincrona... y el problema es que Felixgo lo que no quiere es tener que hacer algo del tipo:

Código Delphi [-]
componente.EnviarFax;
repeat
until not componente.busy;

Para mantener un bucle como el que describi en la primera parte de mi post anterior.

Hasta luego.

__________________
Juan Antonio Castillo Hernández (jachguate)
Guía de Estilo | Etiqueta CODE | Búsca antes de preguntar | blog de jachguate
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 21:22:03.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi