Pessoal estou utilizando a extrutura a abaixo , class com varios records,
e nao sei como fazer para limpar a memoria corretamente apos utilizar.

Record precisa limpar a memoria?

 Tnota = class(TObject)
  public
   codEmpresa   :  String;
   emitente     :  Tipo_dados_emitente;
   destinatario :  Tipo_dados_destinatario;
   Produto      :  array of Tipo_dados_produto ;
 end;

Tipo_dados_produto = record
    nItem   : String;
    infAdProd: String;
    cProd   : String;
    cEAN    : String;
    ICMS    : Tipo_ICMS;
    PIS     : Tipo_dados_ProdutoPISaliquota;
end ;

 Tipo_ICMS = record
    CST00: Tipo_dados_CST00 ;
    CST10: Tipo_dados_CST10 ;
    CST20: Tipo_dados_CST20 ;
    CST30: Tipo_dados_CST30 ;
    CST40: Tipo_dados_CST40 ;
    CST51: Tipo_dados_CST51 ;
    CST60: Tipo_dados_CST60 ;
    CST70: Tipo_dados_CST70 ;
    CST90: Tipo_dados_CST90 ;
   end;


Tipo_dados_CST20  = Record
    Orig : String;
    CST : String;
    modBC : String;
    pRedBC : String;
    vBC : String;
    pICMS : String;
    vICMS : String;
end;

//...........................


   Para utilizar u faco desta maneira 

var 
 nota : Tnota;

begin

    nota := nil;
    nota:= Tnota.Create;

    nota.codEmpresa  := vetorLinha[1];
...
...
   inc(contprod);
   SetLength(nota.Produto,contprod);
   nota.Produto[contprod-1].nItem   := vetorLinha[1] ;
   nota.Produto[contprod-1].infAdProd    := vetorLinha[2] ;
   CONTINUE;;
..
...
  e para limpar faco assim
   nota.free;
   nota:= nil;

Esta correto desta maneira ??? 
esvazia toda a memororia ??


Socorro !!

Att. MArcio - Blumenau





Responder a