Ir para conteúdo

POWERED BY:

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

Estudante Corrupto

Consumo de memória absurdo

Recommended Posts

Consumo de memória do programa, com duas units e pouquíssimas linhas de código está consumindo 6mb de memória. Quer dizer que minha programação está horrível ou quando eu for compilar o programa pra obter um executável final ele vai diminuir???

 

(O código é extremamente simples... algumas consultas sql e uns botões...)

Compartilhar este post


Link para o post
Compartilhar em outros sites

Você estuda no Congresso Nacional, Estudante Corrupto? :)

 

Tudo depende. Na Guerra Fria bastava um botão para destruir a Terra. Brincadeiras à parte, o processamento depende do que faz o botão.

 

No Delphi, qualquer aplicação simples já carrega um core de bibliotecas default. Por ter esta característica é que programas em Delphi são mais simples de serem instalados, sendo, em geral, somente um executável. Esta é uma vantagem visível quando você começa a desenvolver aplicações mais complexas e vê que o tamanho do programa compilado não é alterado significativamente com o aumento de funcionalidades.

 

Por outro lado, mesmo programas pequenos ficam com um tamanho grande se comparados com um feito em VB. Um Hello World no Delphi vai ter por volta de 300KB, enquanto no VB teria por volta de uns 30KB. Isso acontece porque o programa simples em VB já usa bibliotecas compartilhadas existentes no Windows e, desta forma, não precisa compilar com o programa.

 

Se estiver utilizando algum looping no programa, dê uma olhada em um método do Application chamado ProcessMessages.

 

Cirrus.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Estudo sim, aqui é uma boa escola pra esse tipo de graduação uahuahua..

 

Olha só, não tô usando looping nenhum.

 

O código de uma das Units é:

begin
if (edtNome.Text = '') then
begin
  showmessage('Campo "Nome de usuário" é obrigatório');
  edtNome.Setfocus
end
else
if (edtSenha.Text = '') then
begin
  showmessage('Campo "Senha" é obrigatório');
  edtSenha.Setfocus
end
else
  begin

	btnEntrar.Enabled := False; // Desabilita o botão "Entrar"

	// Início da procura no BD do login e senha
	zqrConsulta.SQL.Append('SELECT * FROM users WHERE nome = :nome AND senha = :senha');
	zqrConsulta.ParamByName('nome').AsString := edtNome.Text;
	zqrConsulta.ParamByName('senha').AsString := edtSenha.Text;
	zqrConsulta.Open;
	// FIM da procura no BD do login e senha

	if zqrConsulta.IsEmpty then
	  begin
	   Showmessage('Usuário ou senha incorretos.');
	   edtNome.text := '';
	   edtSenha.text :='';
	   edtNome.Setfocus;
	   btnEntrar.Enabled := True
	  end
	  else
	  begin
	  prbCarregando.Visible := true;
	  zqrConsulta.SQL.Clear;
	  zqrConsulta.SQL.Add('UPDATE usuarios SET online = 1 WHERE nome = :nome AND senha = :senha');
	  zqrConsulta.ParamByName('nome').AsString := edtNome.Text;
	  zqrConsulta.ParamByName('senha').AsString := edtSenha.Text;
	  zqrConsulta.ExecSQL;

	  for i := prbCarregando.Min to prbCarregando.Max do
		begin
		 prbCarregando.Position := I;
		end;
		 UPrincipal.frmPrincipal.ShowModal;
	  end;

e o da segunda unit...

 

procedure TfrmPrincipal.btnSairClick(Sender: TObject);
begin
ULogin.frmLogin.zqrConsulta.SQL.Clear;
ULogin.frmLogin.zqrConsulta.SQL.Add('UPDATE usuarios SET online = 0 WHERE nome = :nome AND senha = :senha');
ULogin.frmLogin.zqrConsulta.ParamByName('nome').AsString := ULogin.frmLogin.edtNome.Text;
ULogin.frmLogin.zqrConsulta.ParamByName('senha').AsString := ULogin.frmLogin.edtSenha.Text;
ULogin.frmLogin.zqrConsulta.ExecSQL;
ULogin.frmLogin.zcnConexao.Disconnect;
Application.Destroy;
end;

Isso é o código que eu criei manualmente... o resto é código pronto do Delphi (ex. botões, definição de tamanho de edits, uses, etc)...

 

E desculpe-me, mas sou novato em Delphi daê não consegui entender como fazer isso que você disse (...Application chamado ProcessMessages...). Se puder dar uma explicação... :)

 

Valeuuu!

Compartilhar este post


Link para o post
Compartilhar em outros sites

A que consumo de memória você se refere? Tamanho do aplicativo gerado em disco após a compilação ou aquele consumo na barra de tarefas do windows?

 

[]'s

Compartilhar este post


Link para o post
Compartilhar em outros sites

A que consumo de memória você se refere? Tamanho do aplicativo gerado em disco após a compilação ou aquele consumo na barra de tarefas do windows?

 

[]'s

Aquele consumo no "Gerenciador de tarefas do Windows", que fica no campo "Uso de memória" da aba "Processos".

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.