Sejam bem vindos ao nosso forum, onde havera hacks, utilitários tutoriais e dicas para diversos jogos, fique conosco e desfrute do melhor.

[TUTORIAL]Reduzindo o Tempo de Carga de um Programa

Ver o tópico anterior Ver o tópico seguinte Ir em baixo

[TUTORIAL]Reduzindo o Tempo de Carga de um Programa

Mensagem por bielzinx em Qui Maio 19, 2011 6:45 pm

{É comum acontecer um sensível aumento do tempo de carga de um aplicativo desenvolvido em Delphi à medida que este aplicativo cresce e adquire mais e mais formulários. Às vezes o tempo de carga se torna totalmente insuportável.

Os programas se tornam lentos principalmente devido à grande quantidade de formulários que são criados e inicializados logo no início da execução do programa. Antes de ser efetivamente utilizado, todo formulário precisa ser criado. A criação do formulário

Sempre que você adiciona um novo formulário ao sistema, o IDE do Delphi providencia código para que ele seja criado automaticamente. Isto simplifica a vida do programador que não precisará se preocupar com este detalhe.

O aumento do tempo de carga do aplicativo pode ser resolvido pela simples remoção do código que o Delphi gerou para a criação do formulário. Entretanto isto cria um problema. Antes de efetivamente mostrar o formulário na tela (ou antes de usar e/ou alterar)

Para remover o código que o Delphi criou automaticamente, selecione Project/Options no menu. Selecione a aba 'Forms'. Aponte para um dos formulários e clique no botão '>'. Isto faz com que o formulário passe do painel 'Auto-create forms' para o painel 'Available forms'

Se você quer saber onde está este código, clique em View/Units (ou use Ctrl-F12) e selecione o seu projeto na lista de units que aparecerá. O código que cria formulários é algo mais ou menos como se segue:}


Application.CreateForm(TForm1, Form1); {Cada formulário auto-criado terá uma linha como esta. Quando o formulário passa para o painel de 'Available forms', a linha correspondente é removida. Você também pode simplesmente remover a linha manualmente, usando o editor de textos.

Tipicamente usar um formulário significa mostrá-lo na tela. Isto é feito invocando-se os métodos Show ou ShowModal do formulário conforme o estilo do aplicativo. Agora que o formulário não é mais criado automaticamente, isto se torna um pouco mais complicado.}





if Form1 = nil then
Form1 := TForm1.Create ( Application );
Form1.Show; { ou Form1.ShowModal; } //Alternativamente você poderia escrever assim:





if Form1 = nil then
Application.CreateForm ( TForm1, Form1 );
Form1.Show; { ou Form1.ShowModal; } {O efeito é o mesmo}

Você deve ter extremo cuidado ao usar esta técnica. Se você tirar o código de criação automática do formulário e tentar executar o Show ou ShowModal você vai receber um erro do tipo 'Access violation'. Tome cuidado e faça isto um formulário por vez.

Atenção! Não faça isto para o seu formulário principal. O formulário principal precisa ser o primeiro formulário a ser criado. Assim é melhor mantê-lo como auto-criado.

Esta técnica efetivamente 'distribui' o tempo de carga e inicialização do aplicativo pela execução do programa. Os formulários agora são carregados 'sob-demanda'. Formulários nunca utilizados nunca serão criados. Isto também melhora o uso de memória.

E, no evento onClose de cada form, pode-se colocar:}




Action := caFree;

//Isso liberará o form da memória, ocupando assim menos espaço.

bielzinx
Membro
Membro

Mensagens : 79
Agradecimentos : 8
Data de inscrição : 14/05/2011
20 / 10020 / 100



Ver perfil do usuário

Voltar ao Topo Ir em baixo

Re: [TUTORIAL]Reduzindo o Tempo de Carga de um Programa

Mensagem por hotyuri em Dom Maio 29, 2011 1:31 am

Facil e Funfa 100% Vlw mano.

Hotyuri Para:



ou


hotyuri
Membro
Membro

Mensagens : 11
Agradecimentos : 0
Data de inscrição : 28/05/2011
Idade : 21
Localização : Cheats HoT
Humor : :D :S Kero Ser Disigner
0 / 1000 / 100



Ver perfil do usuário http://www.global-cheats.tk

Voltar ao Topo Ir em baixo

Ver o tópico anterior Ver o tópico seguinte Voltar ao Topo

- Tópicos similares

 
Permissão deste fórum:
Você não pode responder aos tópicos neste fórum