Analitcs

Pesquisar no conteúdo do blog.atlabs.com.br

quarta-feira, 24 de agosto de 2016

Delphi - Comando para redução de memória - Command to memory reduction

Reações: 
Retirado de: http://www.agnaldocarmo.com.br/home/comando-milagroso-para-reducao-de-memoria-delphi/
Quando você cria uma aplicação Delphi, tudo é um objeto, o Formulário é um objeto, cada objeto ocupa um espaço da memória gerenciado pelo programa após ser instanciado. E todo objeto após ser utilizado deve ser destruído para que esta memória seja liberada…

O que a maioria dos programadores não sabem é que, especificamente em Delphi que não existe “Coletor de Lixo de memória” como na plataforma .NET. Existe uma memória residual que nunca é liberada mesmo que você destrua todos os objetos que instanciar, porque é uma parta da memória que é administrada pelo próprio Sistema operacional. Se você deixar o seu aplicativo aberto, e efetuar diversas ações que interajam com as APIs do Windows ou DLL externas, trabalhar multi-camadas através de sockets…. Ou mesmo fazer movimentos simples como minimizar ou maximizar sua aplicação… Você perceberá que memória reservada no gerenciador de tarefas para o processo do seu executável crescerá. E muitos destes movimentos como maximiza e minimizar, é a parte não gerenciável da memória de sua aplicação pois ela ocorre na própria interação do Sistema Operacional com sua aplicação.

Este procedimento localiza o processo da aplicação, e limpa toda memória residual…
procedure TrimAppMemorySize;
var
  MainHandle : THandle;
begin
  try
    MainHandle := OpenProcess(PROCESS_ALL_ACCESS, false, GetCurrentProcessID);
    SetProcessWorkingSetSize(MainHandle, $FFFFFFFF, $FFFFFFFF);
    CloseHandle(MainHandle);
  except
  end;
  Application.ProcessMessages;
end;

quinta-feira, 4 de agosto de 2016

DELPHI - Erro: Invalid BLOB ID - ClientDataSet + DataSetPrivider + SQLDataset

Reações: 
Erro: Invalid BLOB ID - ClientDataSet + DataSetPrivider + SQLDataset

Ao restabelecer a conexão com o banco de dados, não sei o porque a propriedade do SQLDataset.MaxBlobSize está sendo alterada de 0 para 1.

Solução:

A - Alterar SQLDataset.MaxBlobSize para 0 toda vez antes de abrir o ClientDataSet

B - Marcar no DataSetProvider da relação a opção "poFetchBlobsOnDemand"

Testes Realizados com DelphiXE8 e não localizada solução na internet

quarta-feira, 3 de agosto de 2016

SQL SERVER - Mostrar as sequences relacionado com determinada tabela

Reações: 
SQL para exibir as Sequences relacionado com uma determinada tabela e seu respectivos campos.


select 
 t.name NOME_TABELA,
 t.object_id ID_TABELA,
 c.name NOME_CAMPO,
 c.default_object_id ID_REFERENCIA,
 d.referenced_major_id ID_SEQUENCIA,
 s.name NOME_SEQUENCIA
from 
 sys.tables t
inner join sys.columns c
 on t.object_id = c.object_id and c.default_object_id <> 0
inner join sys.sql_dependencies d
 on d.object_id = c.default_object_id
inner join sys.sequences s
 on s.object_id = d.referenced_major_id
where t.name = 'TABLE_NAME' -- <--Troque 'TABLE_NAME' pelo nome da sua tabela

terça-feira, 2 de agosto de 2016

WINDOWS - Listar compartilhamentos (Windows Server)

Reações: 
Usar o Windows Management Instrumentation Command-line (WMIC):

Abra um prompt (iniciar>executar) e digite:

WMIC

Agora digite:
SHARE GET CAPTION,NAME,PATH

Max Gehringer