Ver Mensaje Individual
  #1  
Antiguo 17-07-2021
juank1971 juank1971 is offline
Miembro
 
Registrado: feb 2008
Posts: 230
Reputación: 17
juank1971 Va por buen camino
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
Responder Con Cita