Fala pessoal!
Na revisão 44798 foi realizada uma alteração importante para corrigir um erro no processo de inicialização das variáveis dentro das classes do ACBrBoleto. Até então, algumas propriedades tinham o valor definido como Default, mas não tinham uma inicialização no Create.
Assim, o valor definido como default no DFM servia apenas para exibição no designer, mas não garantia a inicialização efetiva da propriedade em tempo de execução. Isso acontece porque inicializar uma propriedade corretamente ela deve ser inicializada na classe (veja a nota na documentação do Delphi).
O detalhe é que ao corrigir esse problema, isso talvez gere um efeito colateral no seu código.
Com essa mudança, as variáveis não assumem mais automaticamente o primeiro item de um enumerado por exemplo, mas sim, o valor que está explícito na classe como default.
Assim, se seu aplicativo assume que outro valor é o padrão, talvez por não inicializar as propriedades, vai ser necessário que verifique e inicializar explicitamente as propriedades no seu código.
Queremos deixar claro no entanto que, na aplicação de Exemplo do ACBrBoleto, sempre foi exemplificado que as propriedades deveriam ser inicializadas corretamente. Você pode conferir isso no código que faz uma inclusão de titulo.
Exemplo prático
Imagine que seu código ao incluir um título sempre considerou que o valor padrão era ter um juros mensais. Ou seja, com a propriedade Titulo.CodigoMoraJuros não era preenchida.
Agora você precisa passar um valor para essa propriedade, porque o valor padrão para ela é cjIsento.
Então, se antes seu código era assim:
Titulo.DataMulta := incday(StrToDate(edtVencimento.Text),1);
Titulo.MultaValorFixo := true;
Titulo.PercentualMulta := StrToCurrDef(edtMulta.Text,0);
Titulo.DataMoraJuros := StrToDateDef(edtDataMora.Text, 0);
//note que não tem o CodigoMoraJuros aqui!!! ???
Titulo.ValorMoraJuros := StrToCurrDef(edtMoraJuros.Text,0);
Precisará mudar para:
Titulo.DataMulta := incday(StrToDate(edtVencimento.Text),1);
Titulo.MultaValorFixo := true;
Titulo.PercentualMulta := StrToCurrDef(edtMulta.Text,0);
Titulo.DataMoraJuros := StrToDateDef(edtDataMora.Text, 0);
Titulo.CodigoMoraJuros := cjValorMensal; //Linha adicionada agora <-------
Titulo.ValorMoraJuros := StrToCurrDef(edtMoraJuros.Text,0);
Resumindo
Antes: valores vinham do índice 0 ou da sujeira da memória.
Lembre-se: é responsabilidade do desenvolvedor configurar os dados necessários caso sejam diferentes do default da classe .
Benefício: maior previsibilidade e controle sobre o comportamento das propriedades, evitando resultados inesperados.
Boa prática de programação
Sempre configure as propriedades relevantes logo no início do uso. Isso pode ser feito diretamente no código ou por meio de uma classe/método que centralize essas configurações. Faça isso não só para títulos, boletos e bancos, mas para qualquer componente ou objeto que for criado.