logotipo Blog Giovani Da Cruz
Delphi

Seções Initialization e Finalization no Delphi/Lazarus

2 min de leitura 147 visualizações

Initialization and finalization command in Delphi and Lazarus

No Delphi e no Lazarus, as seções initialization e finalization são partes especiais das units usadas para executar código automaticamente quando o programa carrega ou descarrega aquela unidade. Elas funcionam como “ganchos” de execução automática.

 

✅ O que é initialization

É uma seção opcional dentro de uma unit.
O código ali dentro é executado automaticamente quando:

  • A aplicação é iniciada e a unit é usada por alguma outra unit (aparece em uses)
  • Ou um package é carregado
  • Ou uma DLL é carregada

📌 Para que serve?

  • Criar objetos globais
  • Abrir conexões
  • Inicializar variáveis
  • Registrar classes (por exemplo, em frameworks de RTTI, componentes, etc.)

 

Exemplo

unit MyUnit;

interface

implementation

uses
  Classes;

var
  Lista: TStringList;

initialization
  Lista := TStringList.Create;
  Writeln('Inicializei a lista!');

finalization
  Lista.Free;
  Writeln('Liberei a lista!');

end.

 

✅ finalization

A seção finalization é executada automaticamente quando a unit está sendo descarregada, tipicamente no encerramento da aplicação.

Para que serve

  • Liberar objetos criados na initialization.
  • Fechar arquivos, conexões, sockets.
  • Desregistrar classes.
  • Limpar recursos.

 

🔄 Ordem de execução

A ordem segue a cadeia de dependências:

Initialization:

  1. Units mais “profundas” na árvore de dependências são inicializadas antes. Também podemos entender que é a ordem em que as units aparecem na cláusula uses
  2. A unit principal é inicializada por último.

Finalization:

A ordem é invertida.

 

🧠 Quando usar?

Use initialization/finalization quando:

  • Precisar configurar algo global que deve existir enquanto a aplicação estiver rodando.
  • Precisar garantir que recursos sejam liberados automaticamente ao finalizar.

📛 Evite usar quando:

  • O custo de inicializar for alto (pode deixar o app lento na inicialização)
  • Gerar dependências circulares de units

 

Conclusão

As seções initialization e finalization oferecem ao desenvolvedor um controle poderoso sobre o ciclo de vida das units em Delphi e Lazarus, permitindo inicializar e liberar recursos de forma automática e organizada. Quando usadas corretamente, elas ajudam a garantir que a aplicação comece e termine de maneira consistente, segura e eficiente.

 

 

Gostou da explicação? 💬

Já utilizou initialization e finalization em algum projeto ou teve alguma situação curiosa envolvendo essas seções? 💬

Compartilhe suas experiências nos comentários — vamos aprender juntos! 🚀

 

 

#Delphi #Lazarus #FreePascal #Programação

#DesenvolvimentoDeSoftware #DevTips #CódigoLimpo

#SoftwareEngineering #Pascal #BackendDevelopment

#GiovaniDaCruz

 

 

Deixe um comentário

Seu e-mail não será publicado.