Página 1 de 1

RAD Studio XE 10.2 RELEASE 1 problemas com Windows Create Update

Enviado: 16/Ago/2017, 22:37
por emailx45
no blog do Marcos Cantu vc vera um artigo sobre a nova versao Rad Studio Xe10.2 RELEASE 1 e Microsft Windows Create Update q esta dando trabalho p Embarcadero e seus clientes.

A Microsoft tem mudado a forma de carregamento das DLL/BPL no caso de Delphi.leia o artigo.

https://community.embarcadero.com/blogs ... ium=social

isto aliado aos pobremas do XE10.2 TOKYO com aplicativos Android.

tente atualizar o NDK v14 + Tools e JAVA v8

https://developer.android.com/studio/index.html

https://developer.android.com/ndk/downloads/index.html

http://www.oracle.com/technetwork/java/ ... 33151.html

em formularios FMX alguns estao usando o seguinte

****†**********

Começando com RadStudio Tokyo 10.2 Update 1 Os projetos FireMonkey podem ser afetados por uma grande quantidade de vazamentos de memória, por falta de uma chamada interna. Existem diferentes abordagens para resolver isso.

Info

As postagens aqui foram coletadas de tópicos diferentes, porque as postagens abordam o mesmo problema.

Parece que a solução de Stefan Glienke funciona.

"Eu resolvi isso adicionando uma chamada para CheckSynchronize no final do FMX.Forms.DoneApplication que força as devoluções de chamada a serem executadas que resolveram o enorme vazamento de memória". - Stefan Glienke

Code:

procedure DoneApplication;
begin
if Screen <> nil then
Screen.ActiveForm := nil;
Application.DestroyComponents;
//Rohit (RK) added this line on 10 Aug 2017 to address the defect listed
//in https://quality.embarcadero.com/browse/RSP-18774 that was causing memory leaks
CheckSynchronize;
end;

Mimarsinan disse:

Alguma idéia sobre o que essa solução poderia ser?

Certo. Siga esses passos...

Copie o arquivo "Embarcadero \ Studio \ 19.0 \ source \ fmx \ FMX.Forms.pas" para você na pasta do projeto.

Abra o arquivo em qualquer editor de texto ...
~ Linha 1385

Code:
procedure DoneApplication;
begin
if Screen <> nil then
Screen.ActiveForm := nil;
Application.DestroyComponents;
CheckSynchronize(); <- Add this line
end;

Abra o arquivo DPR e remova FMX.Forms da lista de usos e adicione, em seguida, ao arquivo FMX.Forms modificado para o seu projeto.
Alternativa, você pode ampliar a entrada existente para ...

Code:
program MasterDetailApplication;
uses
System.StartUpCopy,
MasterDetail in 'MasterDetail.pas' {MasterDetailForm},
FMX.Forms in 'FMX.Forms.pas'; <- This line can be adapted manually

Após essas etapas, compile e execute seu aplicativo e o vazamento de memória deve ter desaparecido. Infelizmente, o método "DoneApplication" é privado, portanto, a fonte existente deve se adaptar dessa maneira. Mas dessa maneira é revertable, porque não posso acreditar que o Embarcadero não consertará é breve.

Você pode adicionar o próprio procedimento no arquivo dpr e AddExitProc adicionar à execução final.

na clausula Uses adicione System.SysUtills e System.Classes.

procedure DoneApplication;
begin
CheckSynchronize:
end;

begin
AddExitProc(DoneApplication);
...

Application.Run;
end;

:ugeek: