Fórum Dúvida sobre TList #365171
16/10/2008
0
Gostaria de saber algumas coisas sobre o seguinte código:
Var
Lista: TList;
begin
Lista := TList.Create;
Lista.Add(TMinhaClasse.Create);
//Primeira duvida
Lista.Clear; //Isso vai limpar o objeto e o ponteiro criado pela TMinhaClasse??
//Segunda duvida
TMinhaClasse(Lista[0]).Free;
Lista[0] := nil;
//A rotina acima é mais garantida que o Lista.Clear ??
end;
Qual a melhor maneira de se incluir objetos em um TList e depois, quando eu quiser apaga-los, garantir que estes objetos criados não permanecem em memória? Nem seus ponteiros?
Obrigado.
Bianchini
Curtir tópico
+ 0Posts
16/10/2008
Carlosib
Adicione a unit Contnrs
Segue abaixo um pequeno exemplo:
TmyClass = class
_nome : string;
_idade : integer;
end;
TForm1 = class(TForm)
Button2: TButton;
procedure Button2Click(Sender: TObject);
private
{ Private declarations }
public
{ Public declarations }
_p : TmyClass;
ListaPessoas : TObjectList;
end;
var
Form1: TForm1;
implementation
{$R *.dfm}
procedure TForm1.Button2Click(Sender: TObject);
var
_p : TmyClass;
begin
if not Assigned(ListaPessoas) then
ListaPessoas := TObjectList.Create(true);
_p := TmyClass.Create;
_p._nome := ´Pedro Paulo de Souza´;
_p._idade := 19;
//Adicionando a pessoa na lista
ListaPessoas.Add(_p);
//Lendo a pessoa da lista....
// TmyClass(ListaPessoas.Items[indice])._nome
showMessage(TmyClass(ListaPessoas.Items[0])._nome);
//Caso vc deseje percorrer a lista
//for _idx :=0 to ListaPessoas.Count-1 do
//showMessage(TmyClass(ListaPessoas.Items[_idx])._nome);
//Limpando a lista
FreeAndNil(ListaPessoas);
end;
Olhe os métodos... delete..clear...indexOf... entre outros...
É bem simples de usar.
Gostei + 0
16/10/2008
Bianchini
mas nesse caso o obejto _p tb seria destriudo da memoria?? junto com seu ponteiro?
Gostei + 0
16/10/2008
Carlosib
1) ListaPessoas.Delete(_idxPessoa)
OU
2) ListaPessoas.Free
O que ocorrer primeiro.
Gostei + 0
16/10/2008
Bianchini
E se eu fizer o seguinte:
ListaPessoas.Add(TmyClass.Create);
??
Quando eu invocasse o ListaPessoas.Clear o objeto criado por TmyClasse.Create tb seria destruido??
teria o mesmo efeito??
Gostei + 0
16/10/2008
Carlosib
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)