DBHelpers 3

Acabo de publicar uma nova versão de DBHelpers. A versão 3 resolve alguns bugs de TRecordEnumerator e adiciona o novo método Restore.

Se você acompanhou o histórico da unit DBHelpers, sabe que o objetivo de TRecordEnumerator é percorrer todo o dataset (opcionalmente filtrado) restaurando automaticamente ao final as propriedades Active, Filter e Filtered, além de desabilitar os controles durante o loop e reposicionar o dataset para o registro corrente no início.

Usando a interface IRecordEnumerator, você não precisa se preocupar em liberar da memória o objeto enumerador e nem em restaurar o estado do dataset, o que é feito automaticamente pelo método Destroy quando a interface sai do escopo. O novo método público Restore permite você antecipar esse momento de restauração de forma mais legível. A única alternativa anteriormente era desalocar explicitamente a interface atribuindo “nil” à variável.

O exemplo abaixo constrói uma string com todos os valores de Fields[1] separados por vírgula. Observe que um objeto é instanciado e atribuido a uma variável interface, sendo automaticamente desalocado pelo compilador.

var
  Records: IRecordEnumerator;  // interface
  S: String;
begin
  S: String;
  Records := TRecordEnumerator.Create(ClientDataSet1);  // classe
  while Records.MoveNext do
    S := S + ClientDataSet1.Fields[1].AsString + ',';
  Records.Restore;
end;

Fique claro que não é necessário chamar Restore a não ser que você precise restaurar o dataset antes de sair do escopo da rotina que alocou a variável interface.

Comments

One Response to “DBHelpers 3”

  1. Renato on February 27th, 2008 9:52 am

    Parabéns, múito interessante sua unit, teria mais alguma documentação além dos três posts no seu blog???

    falowww

Deixe uma Resposta




XHTML: Você pode usar essas tags: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong> <pre lang="" line="">