Ok, muito obrigado, vou tentar digerir isto e ver se consigo fazer funcionar. Depois eu retorno o resultado ou outras dúvida.
Valeu a força camarada!

----- Original Message -----
  From: Rodrigo Othavio Farias
  To: delphi-br@yahoogrupos.com.br
  Sent: Friday, May 19, 2006 8:58 AM
  Subject: Re: [delphi-br] Estouro de Memória - Quais os limites do Delphi A/C Rodrigo Farias


  É, da pra usar teus records como base pras classes de maneira bem facil,
  sugiro para as classses usar como classe base a TcollectionItem e em vez de
  arrays usa Classes TOwnedCollection, tem exemplos no help do Delphi, com
  isso vc programa OOP e garante um melhor uso de memoria, pq só aloca o que
  realmente vai usar.

  Segue abaixo um exemplo de criação dessas classes, adapte ele pra suas
  necessidades:
  /*************************
  interface

  uses
    Classes;

  type

    TDireito = class(TCollectionItem)
    private
    public
      constructor Create(ACollection: TCollection); override;
      destructor Destroy; override;

    end;


    TDireitos = class(TOwnedCollection)
    private
      function GetItem(i: integer): TDireito;
      procedure SetItem(i: integer; AValue: TDireito);
    public
      constructor Create(AOwner:TPersistent);
      destructor Destroy; override;

      function Add : TDireito;
      property Items[i:integer]: TDireito read GetItem write SetItem; default;

    end;

  implementation

  {TDireitos}
  constructor TDireitos.Create(AOwner: TPersistent);
  begin
    inherited Create(AOwner, TDireito);
  end;

  destructor TDireitos.Destroy;
  begin
    inherited;
  end;

  function TDireitos.Add: TDireito;
  begin
    Result := TDireito( inherited Add );
  end;

  function TDireitos.GetItem(i: integer): TDireito;
  begin
    Result := TDireito( inherited Items[i] );
  end;

  procedure TDireitos.SetItem(i: integer; AValue: TDireito);
  begin
    Items[i].Assign( AValue );
  end;


  {TDireito}
  constructor TDireito.Create(ACollection: TCollection);
  begin
    inherited Create(ACollection);
  end;

  destructor TDireito.Destroy;
  begin
    inherited;
  end;


  end.


  /*****************************



  Rodrigo Othávio Farias


  ----- Original Message -----
  From: "Benn Yahoo" <[EMAIL PROTECTED]>
  To: <delphi-br@yahoogrupos.com.br>
  Sent: Thursday, May 18, 2006 7:51 PM
  Subject: [delphi-br] Estouro de Memória - Quais os limites do Delphi A/C
  Rodrigo Farias


  Camarada,

  Como eu faço isso? Criar uma classe com as mesmas variaveis do record?


  Olha o que eu estou fazendo assim:

        type TPartialFitnessAssembly = record
           Param1                    :Real;
           Param2                    :Real;
           Param3                    :Real;
           Param4                    :Real;
           Param5                    :Real;
           Loaded                    :boolean;
        end;

        type TAlleleAssembly = record
             Id                      :integer;
             NickName                :String;
             PartialFitness          :TPartialFitnessAssembly;
             Loaded                  :boolean;

             EdNickName              :TEdit;
             LbId                    :TLabel;
        end;

        type TLocusAssembly = record
             Name                    : String;
             Value                   : Integer;
             AllelesCount            : Integer;
             RecombinationRate       : Integer;
             MutationRate            : Integer;
             Alleles                 : array of TAlleleAssembly;
             Loaded                  : boolean;

             EdNickName              : TEdit;
             SpinAlleleCount         : TSpinEdit;
             SpinMutationRate        : TSpinEdit;
             SpinRecombinationRate   : TSpinEdit;
             LbName                  : Tlabel;
             LbCaller                : Tlabel;
             ImgRecombination        : TImage;
        end;

        type TChromosomeAssembly = record
            Id                       : String;
            LocusCount               : Integer;
            Locus                    : array of TLocusAssembly;
            Loaded                   : boolean;

            SELocusCount             : TSpinEdit;
            LbName                   : Tlabel;
            LbCaller                 : Tlabel;
            InfoHint                 : String;
        end;

  Assim por diante, depois eu crio as variáves a partir destes Tipos
    ----- Original Message -----
    From: Rodrigo Othavio Farias
    To: delphi-br@yahoogrupos.com.br
    Sent: Thursday, May 18, 2006 8:55 AM
    Subject: Re: [delphi-br] Estouro de Memória - Quais os limites do Delphi


    vc podeira trocar esse teu record por uma classe, melhor umas lista de
    objetos, o Delphi trata muito bem essa alocação dinamica de ponteiros de
    objetos. Pense OOP :)



    Rodrigo Othávio Farias


    ----- Original Message -----
    From: "Benn Yahoo" <[EMAIL PROTECTED]>
    To: <delphi-br@yahoogrupos.com.br>
    Sent: Wednesday, May 17, 2006 2:23 PM
    Subject: [delphi-br] Estouro de Memória - Quais os limites do Delphi


    Estou criando um array grande (mais de 20000) este array é montado
    dinâmicamente a partir de um type record, que tem um de seus eixos um
  array
    dinâmico de outro type record e assim por diante.

    Porém lá pelas tanta o programa acusa falta de memória e para, não vai nem
    pra frente nem para trás.

    Algumas questões:

    Como posso calcular o tamanho que isso está ocupando na memória?
    como saber o quanto de memória posso usar (uma vez que dando ctrl+alt+del
    ele diz que está ocupando 250, Mb sendo que meu computador tem 1Gb e acusa
    falta de memória)
    Um array tem um limite de tamanho?
    Por que quando eu crio uma variavel de um type record que eu criei e
  atribuo
    uma outra variavel do mesmo tipo ele vira apenas uma referência e não uma
    variavel independente, sendo que ao alterar a que recebe o valor o valor é
    alterado na variável que doou o valor.

    Camaradas, obrigado pela força que vcs têm me dado!
    Um Abração,
    Benn





    [As partes desta mensagem que não continham texto foram removidas]





    --
    <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



    Links do Yahoo! Grupos












    --
    <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>





          Yahoo! Grupos, um serviço oferecido por:
                PUBLICIDADE




  ----------------------------------------------------------------------------
  --
    Links do Yahoo! Grupos

      a.. Para visitar o site do seu grupo na web, acesse:
      http://br.groups.yahoo.com/group/delphi-br/

      b.. Para sair deste grupo, envie um e-mail para:
      [EMAIL PROTECTED]

      c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do
  Serviço do Yahoo!.



  [As partes desta mensagem que não continham texto foram removidas]






  --
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>



  Links do Yahoo! Grupos













  --
  <<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>





        Yahoo! Grupos, um serviço oferecido por:
              PUBLICIDADE
               
      


------------------------------------------------------------------------------
  Links do Yahoo! Grupos

    a.. Para visitar o site do seu grupo na web, acesse:
    http://br.groups.yahoo.com/group/delphi-br/
     
    b.. Para sair deste grupo, envie um e-mail para:
    [EMAIL PROTECTED]
     
    c.. O uso que você faz do Yahoo! Grupos está sujeito aos Termos do Serviço do Yahoo!.



[As partes desta mensagem que não continham texto foram removidas]





--
<<<<< FAVOR REMOVER ESTA PARTE AO RESPONDER ESTA MENSAGEM >>>>>

<*> Para ver as mensagens antigas, acesse:
    http://br.groups.yahoo.com/group/delphi-br/messages

<*> Para falar com o moderador, envie um e-mail para:
    [EMAIL PROTECTED]



Yahoo! Grupos, um serviço oferecido por:
PUBLICIDADE


Links do Yahoo! Grupos

Responder a