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