Ops, destructors não existem em records.

2008/7/4 Guionardo Furlan <[EMAIL PROTECTED]>:
> 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
>



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

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

Responder a