Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Desarrollo en Delphi para Android
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy


 
 
Herramientas Buscar en Tema Desplegado
  #7  
Antiguo 17-04-2026
dani36652 dani36652 is offline
Miembro
 
Registrado: abr 2019
Posts: 78
Poder: 8
dani36652 Va camino a la fama
Cita:
Empezado por jhonalone Ver Mensaje
Gracias de nuevo por el código.

Lo puse en OnCreate y compila bien, pero me tira la app en el arranque.
Llevo un rato dando vueltas, pero no consigo averiguar la causa. Es una aplicación Android14
Un saludo.
Que onda amigazo... tu app se rompe por que Android emite una excepción de tipo ANR "Android No Responde" al ejecutar procesos pesados en el hilo principal, te sugiero usar siempre Threads para procesos pesados NO VISUALES en android como consumir webservices, peticiones hhtp, etc.

Lo qe yo haría en tu caso es:
Código Delphi [-]
 uses
  System.SysUtils, System.Net.HttpClient, System.DateUtils;

function HoraLocalManipulada: Boolean;
var
  HttpClient: TNetHTTPClient;
  t0, t1: TDateTime;
  Respuesta: string;
  HoraServidor: TDateTime;
  HoraLocalAprox: TDateTime;
  Diferencia: Double;
  FS: TFormatSettings;
begin
  Result := False;
  HttpClient := TNetHTTPClient.Create(nil);
  try
    try
      t0 := Now;

      Respuesta := HttpClient.Get('https://intitec.com/debug/getahora.php').ContentAsString(TEncoding.UTF8);
      Respuesta := Trim(Respuesta);

      t1 := Now;

      FS := TFormatSettings.Create;
      FS.DateSeparator := '-';
      FS.TimeSeparator := ':';
      FS.ShortDateFormat := 'yyyy-mm-dd';
      FS.ShortTimeFormat := 'hh:nn:ss';

      if not TryStrToDateTime(Respuesta, HoraServidor, FS) then
        Exit;

      HoraLocalAprox := (t0 + t1) / 2;

      Diferencia := SecondsBetween(HoraServidor, HoraLocalAprox);

      Result := Abs(Diferencia) > 60;
    except
      Result := False;
    end;
  finally
    HttpClient.Free;
  end;
end;


//Forma de uso: 

procedure Algo;
var 
   Thread: TThread;
begin 
   //Puedes mostrar pantalla de carga
   Thread:= TThread.CreateAnonymousThread(procedure
       var 
          HraManipulada: boolean;
       begin 
           HraManipulada:= HoraLocalManipulada;
           TThread.Synchronize(nil, 
           procedure
           begin         
                //Aqui ocultar pantalla de carga o hacerlo en el Evento OnTerminate.
               //Mostrar mensajes, o cualquier cosa que sea meramente visual aquí  
               if HraManipulada = True then 
                  ShowMessage('No le mueva a la hora si no le sabe :P');
           end);
       end);
      Thread.FreeOnTerminate:= True;
      //Thread.OnTerminate := MyOnTerminate (Puedes declararlo así: procedure MyOnTerminate(Sender: TObject);
      Thread.Start;
end;
Responder Con Cita
 



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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Detectar un cambio en Mysql JULIPO SQL 7 17-11-2015 16:44:09
Detectar cambio en Listbox Anel Hernandez Varios 7 22-10-2012 19:26:33
Detectar cambio en componentes capo979 Varios 5 24-04-2008 17:10:22
Detectar cambio de posicion en dataset Ezecool Conexión con bases de datos 7 10-07-2007 20:53:19
Detectar el cambio de un directorio NeWNeO API de Windows 2 03-01-2005 09:36:48


La franja horaria es GMT +2. Ahora son las 07:31:52.


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