ActiveDelphi - Índice do Fórum ActiveDelphi
.: O site do programador Delphi! :.
 
 FAQFAQ   PesquisarPesquisar   MembrosMembros   GruposGrupos   RegistrarRegistrar 
 PerfilPerfil   Entrar e ver Mensagens ParticularesEntrar e ver Mensagens Particulares   EntrarEntrar 

Delphi Rio.

 
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi
Exibir mensagem anterior :: Exibir próxima mensagem  
Autor Mensagem
marcelo_tux
Aprendiz
Aprendiz


Registrado: Terça-Feira, 2 de Abril de 2013
Mensagens: 230
Localização: São José do Rio Preto - SP

MensagemEnviada: Ter Mai 28, 2019 4:48 pm    Assunto: Delphi Rio. Responder com Citação

Boa tarde pessoal.
Eu testei uma aplicação feita em delphi tokyo no delphi Rio.
E reparei que o Application.ProcessMessages; não funciona mais nele.
Exemplo que estou testando :
No sincronismo que fazia antes eu eu recebia de retorno da função a quantidade de registros atualizados no app , então seria mais ou menos assim :

qtdregistros.text := funcaogetclientes;
Application.ProcessMessages;
qtdregistros1.text := funcaogetprodutos;
Application.ProcessMessages;
qtdregistros2.text := funcaogetvendedores;
Application.ProcessMessages;

Com isso após o sincronismo , meu label recebia a quantidade retornada pela função.
Com o Delphi Rio isso não funciona mais.
Alguém teria um idéia de como solucionar isso ?
_________________
Porgramador Delphi - Mobile
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
rodrigoprado
Colaborador
Colaborador


Registrado: Terça-Feira, 24 de Mai de 2005
Mensagens: 1074
Localização: Curitiba/PR

MensagemEnviada: Qua Jun 05, 2019 10:16 pm    Assunto: Responder com Citação

https://forums.embarcadero.com/message.jspa?messageID=891296

http://docwiki.embarcadero.com/Libraries/Rio/en/FMX.Forms.TApplication.ProcessMessages

Ve se ajuda
_________________
- Compartilhe seus conhecimentos -
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
rodrigoprado
Colaborador
Colaborador


Registrado: Terça-Feira, 24 de Mai de 2005
Mensagens: 1074
Localização: Curitiba/PR

MensagemEnviada: Ter Jun 11, 2019 9:45 pm    Assunto: Responder com Citação

Amigo achei outra solução melhor, devemos fugir sempre que possível do application.processMessages, ainda mais para ambiente mobile.

Acompanha este tópico:

https://en.delphipraxis.net/topic/924-delphi-rio-android-applicationprocessmessages-dosent-work/

Em resumo este método funcionava no tokyo:

Código:
 ProgressBar1.Value:=0;
  ProgressBar1.Max:=100;

  for I := 0 to 100 do
  begin
    ProgressBar1.Value:=I;
    application.ProcessMessages;
    sleep(100);
  end;


Todavia no Rio ele congela e não funciona mais.

Como alternativa use deste modo:

Código:
ProgressBar1.Value : =0;
ProgressBar1.Max := 100;
Timer1.Enabled := True;

procedure TForm1.Timer1Timer(Sender: TObject);
begin
  ProgressBar1.Value := ProgressBar1.Value + 1;
  if ProgressBar1.Value >= ProgressBar1.Max then
  begin
    Timer1.Enabled := True;
    Exit;
  end;
  //...
end;



Fiz o teste e deu certinho, o tokyo tinha uns furos pelo que entendi, o Rio já em mais fechado, em tese realmente não é pra funcionar seu código pq estaria errado mesmo, eu demorei a entender isso, no meu app deu uns probleminha depois que migrei também, com umas imagens q eu usava false ou true.

Ou usemos Threads, pois Tarefas de longa duração devem ser executadas em segundo plano, separadas da interface.

Duvidas avisa ai..
_________________
- Compartilhe seus conhecimentos -
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
marcelo_tux
Aprendiz
Aprendiz


Registrado: Terça-Feira, 2 de Abril de 2013
Mensagens: 230
Localização: São José do Rio Preto - SP

MensagemEnviada: Qua Jun 12, 2019 10:40 am    Assunto: Responder com Citação

Obrigado pela resposta.
Eu já havia visto este post, inclusive tanto o timer quanto a thread funcionou em partes.
O meu problema é que tenho 4 funcões , getvendedor,getcliente,getproduto e getcondicao.
Cada uma delas conectam no meu webservice feito em delphi e sincroniza os dados. Depois que coloquei no Rio , elas não funcionam . Já debuguei e vi que ela para no request.execute da ultima funcão, ou seja independente de qual se ja a ultima, ele sincroniza 3 somente, a 4 ela trava , nao da erro, nao retorna nada do servidor, simplesmente para no get da ultima função.
Exemplo : sincronizou, vendedor atualizei a tela, atualizou o cliente atualizei a tela, atualizou o produto atualizei a tela, quando chega na condição ele para não da prosseguimento e também não gera erro algum nem no servidor nem no aparelho.
_________________
Porgramador Delphi - Mobile
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
rodrigoprado
Colaborador
Colaborador


Registrado: Terça-Feira, 24 de Mai de 2005
Mensagens: 1074
Localização: Curitiba/PR

MensagemEnviada: Qui Jun 13, 2019 11:24 am    Assunto: Responder com Citação

E se tentar usar uma TThread, o meu caso era mais simples que o seu, todavia testei com um timer e com thread ambos deram certo, tive que adaptar aqui, testa assim

**ambos os casos SEM application.ProcessMessages;

http://eduardobinotto.blogspot.com/2014/03/threaddelphi-anonymous-thread.html

Código:
procedure TFormPrincipal.Button1Click(Sender: TObject);
//var MyThread: TThread;
begin
  ProgressBar1.Value :=0;
  ProgressBar1.Max :=100;
  ProgressBar2.Value :=0;
  ProgressBar2.Max :=100;
  {MyThread := TThread.CreateAnonymousThread(procedure var i:integer;
  begin
    for i := 0 to 100 do
    begin
      TThread.Synchronize(MyThread, procedure
      begin
        ProgressBar1.Value := i;
        ProgressBar2.Value := i*2;
      end);
      Sleep(100);
    end
  end);
  MyThread.Start;  }
  TThread.CreateAnonymousThread(procedure var i:integer;
  begin
    for i := 0 to 100 do
    begin
      TThread.Synchronize(TThread.CurrentThread, procedure
      begin
        ProgressBar1.Value := i;
        ProgressBar2.Value := i*2;
      end);
      Sleep(100);
    end
  end).Start;
end;

_________________
- Compartilhe seus conhecimentos -
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
marcelo_tux
Aprendiz
Aprendiz


Registrado: Terça-Feira, 2 de Abril de 2013
Mensagens: 230
Localização: São José do Rio Preto - SP

MensagemEnviada: Qui Jun 13, 2019 11:30 am    Assunto: Responder com Citação

Já testei também assim.
O problema é alguma limitação não sei existente no android com o Delphi Rio.
Se eu rodar o que ti falei tanto com thread ou timer no win32 roda normal, quando colcoa o mesmo codigo no android com o delphi rio ele não vai.
È alguma limitação ou bloqueio de conexao, limite de transação em rede simultanêa , alguma coisa assim.
Outro teste que fiz. Compilo esse mesmo codigo do Delphi rio com o tokyo , funciona normal.
Outro detalhe , um exemplo igual esse seu tambem funciona, o problema é quando usa conexoes de rede .

Deve ser porque preciso de 4 sincronismos no servidor, com thread , elas são feitas simultaneas , não espera uma pra começar a outra. Ai da o problema.
_________________
Porgramador Delphi - Mobile
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular Enviar E-mail
aalmeidasp
Aprendiz
Aprendiz


Registrado: Segunda-Feira, 24 de Mai de 2010
Mensagens: 191

MensagemEnviada: Seg Ago 19, 2019 11:22 am    Assunto: Responder com Citação

marcelo_tux escreveu:
Já testei também assim.
O problema é alguma limitação não sei existente no android com o Delphi Rio.
Se eu rodar o que ti falei tanto com thread ou timer no win32 roda normal, quando colcoa o mesmo codigo no android com o delphi rio ele não vai.
È alguma limitação ou bloqueio de conexao, limite de transação em rede simultanêa , alguma coisa assim.
Outro teste que fiz. Compilo esse mesmo codigo do Delphi rio com o tokyo , funciona normal.
Outro detalhe , um exemplo igual esse seu tambem funciona, o problema é quando usa conexoes de rede .

Deve ser porque preciso de 4 sincronismos no servidor, com thread , elas são feitas simultaneas , não espera uma pra começar a outra. Ai da o problema.


Eu tenho o mesmo problema com um projeto meu. Vou ter que revisar toda a lógica do programa. Eu fiz um jogo para Android e ele funciona muito bem para Delphi Seattle, porém quando compilo e rodo no Delphi Rio dá vários problemas.
Voltar ao Topo
Ver o perfil de Usuários Enviar Mensagem Particular
Mostrar os tópicos anteriores:   
Novo Tópico   Responder Mensagem    ActiveDelphi - Índice do Fórum -> Mobile com Delphi Todos os horários são GMT - 3 Horas
Página 1 de 1

 
Ir para:  
Enviar Mensagens Novas: Proibido.
Responder Tópicos Proibido
Editar Mensagens: Proibido.
Excluir Mensagens: Proibido.
Votar em Enquetes: Proibido.


Powered by phpBB © 2001, 2005 phpBB Group
Traduzido por: Suporte phpBB