Opa, acho que isso resolve minha questão:

http://delphi.about.com/od/adptips2006/qt/newdelphirecord.htm

constructors e destructors automáticos.

2008/7/4 Davi Eduardo Borges Wall <[EMAIL PROTECTED]>:
>
> Muito legal as perguntas e respostas!
>
> Eu ainda diria para você tomar de costume sempre que possível inicializar 
> variáveis. É uma boa prática de programação e evita problemas futuros.
>
> []'s
>
> ________________________________
>
> De: delphi-br@yahoogrupos.com.br [mailto:[EMAIL PROTECTED] Em nome de Joao 
> Morais
> Enviada em: sexta-feira, 4 de julho de 2008 15:37
>
> Para: delphi-br@yahoogrupos.com.br
> Assunto: Re: [delphi-br] Dúvida com Record
>
> Guionardo Furlan wrote:
> > TReg = record
> > private
> > FInicializado: Boolean;
> > FData: array of string;
> > function GetCount: Integer;
> > function SetCount(const Value: Integer);
> > public
> > property Count: Integer read GetCount write SetCount;
> > property Data[Index: Integer] read GetData write SetData;
> > end;
> > <snip>
> > 1. Quando eu defino uma variável com o tipo TReg, o campo FInicializado
> > Booleano é *sempre* criado como False?
>
> Ao instanciar uma classe, sim. Record eu me arrisco a dizer que não, uma
> vez que ele não tem uma rotina de inicialização como uma classe.
>
> Se a variável desse record for global, possivelmente ele será
> inicializado. Se for dentro de uma procedure, function ou method, mais
> provável que não.
>
> > 2. Após vários processos em que o tamanho da array de strings FData é
> > modificado, pode ocorrer vazamento de memória?
>
> Não. Array dinâmico possui contagem de referência e ele é destruído tão
> logo saia de escopo, assim como acontece com ansi strings.
>
> > Num sistema, criei um record similar a este, e depois disso, começaram a
> > aparecer mensagens do FastMM falando sobre vazamento de memória com tipos
> > string, que não estou conseguindo identificar.
>
> Você cria alguma coisa dinamicamente, tal como instância de classes ou
> através da procedure new? Talvez a string esteja em um array, e este
> array esteja associado a alguma outra área de memória, tal como um
> objeto ou uma variável dinâmica?
>
> > No NG, recebi dicas para utilizar classes ao invés de records, mas foi o que
> > me pareceu mais econômico, já que as variáveis record serão acessadas
> > localmente, dentro de outras classes.
>
> A única economia ao utilizar record é não precisar instanciar, e seus
> métodos receberem um parâmetro a menos (que no caso da classe é o
> ponteiro da instância) mas será que realmente vale a economia?
>
> Joao Morais
>

--
Timeo hominem unius libri
Cogito ergo sum - Carpe diem

[]s
Guionardo Furlan
http://guionardo.blogspot.com

Responder a