Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   FireMonkey (https://www.clubdelphi.com/foros/forumdisplay.php?f=50)
-   -   Obtener resultados dentro de un TTask (https://www.clubdelphi.com/foros/showthread.php?t=95290)

juank1971 17-07-2021 01:04:02

Obtener resultados dentro de un TTask
 
saludos :


Uff no se come preguntar esto.

estoy en firemonkey verificando si hay conexion a internet con este codigo



Código Delphi [-]
function TDM.ChequearConexion: boolean;
 var
  http:THTTPCLient;
begin
  result := false;
  try
    http:=THTTPCLient.Create;
    try
    result := http.Head('https://google.com').StatusCode < 400;
  except
  end;
  finally
    http.DisposeOf;
  end;
end;


Esta Función anterior devuelve true si hay conexion, ahora quiero llamar una animacion mientras se chequea y destruirla luego de terminar con este codigo



Código Delphi [-]
 TTask.Run( procedure
             begin
               TThread.Synchronize(nil, procedure
                                        begin
                                         MuestraAnimacion(true,'Verificando Conexión...');
                                         application.ProcessMessages;
                                        end);

               if not DM.ChequearConexion then
                begin
                 TThread.Synchronize(nil, procedure
                                        begin  //no hay conexion
                                         MuestraAnimacion(false,'Verificando Conexión...');
                                         DM.DDCDialog.Run(LayoutMain , 'Error de Conexión', 'No esta conectado a internet',
                                                          '', 'Aceptar','sinconexion');
                                        end)
               end
               else
                  TThread.Synchronize(nil, procedure
                                        begin  // si hay conexion
                                         MuestraAnimacion(false,'Verificando Conexión...');
                                         ShowMessage('ok'); //*********** aqui quisiera obtener algo por parametros
                                        end);

             end ); //TTask.Run


en este procedimiento trato de hacerlo con TTask pero no ejecutar codigo en ese lugar lo que quisiera es obtener

ese resultado para luego hacer otras cosas sabiendo que hay conexion;


Creo que la forma de preguntar mi duda es, como puedo dentro de un TTask.()
saber si algo me devuelve un resultado y usarlo luego



O sea donde dice ShowMessage('ok'); //***********

quisiera obtener algo en variable o algo y saber fuera del ttask que si hay conexion



En resumen quisiera ejecutar en una apk android con firemonkey

con la mayor cantidad posible de TTask para evitar bloqueos lo siguiente:

1- mostrar animacion (Chequear Conexion)

2- Saber si hay conexion
3- ocultar animacion
4- Si hay conexion mostrar animacion (Obteniendo datos del rest)
5- Ejecutar 1ra llamada al rest

6-ocultar animacion


no se si loge explicarme jj


lo digo porque por ejemplo he tratado en android de hacer esto



Código Delphi [-]
  var Resultado := false;

  TTask.Run( procedure
             begin

              TThread.Synchronize(nil, procedure
                                        begin  // si hay conexion
                                         MuestraAnimacion(false,'Verificando Conexión...');
                                         Resultado:=true;
                                        end);
             end);
no funciona en android



saludos

juank

Punzo 27-07-2021 18:12:05

Qué tal?, hay un hilo con el que empecé a intentar lo que quieres, todavía no lo logro, quiero hacer lo mismo con un proyecto, pero igual, me ha dado problemas checa este link:

https://chapmanworld.com/2016/07/14/...ackend-part-8/

En el último código que posteas, al parecer te falta el proceso que va a hacer al mismo tiempo;

Saludos

Punzo 27-07-2021 18:19:17

Está lectura también es recomendable:

http://www.malcolmgroves.com/blog/?p=1678


La franja horaria es GMT +2. Ahora son las 02:55:46.

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