Fórum Array Propert #411915
25/01/2012
0
function getEndereco(index: integer): TclsEndereco_Pessoa;
procedure setEndereco(index: integer; const Value: TclsEndereco_Pessoa);
fArraycli_Endereco_Cliente:array of TclsEndereco_Pessoa;
property array_pes_endereco[index:integer]:TclsEndereco_Pessoa read getEndereco write setEndereco;
function TclsPessoa.getEndereco(index: integer): TclsEndereco_Pessoa;
begin
Result:= fArraycli_Endereco_Cliente[index];
end;
procedure TclsPessoa.setEndereco(index: integer;
const Value: TclsEndereco_Pessoa);
begin
fArraycli_Endereco_Cliente[index]:= value;
end;
-------------------------------------------------------------------------
Quando tento fazer assim em tempo de copilação esta dando erro :[DCC Error] clsCliente.pas(119): E2029 [ expected but ) found.
E o para no for.
{Incluir na tabela de Endereços}
for I := 0 to High(array_pes_endereco) do
array_pes_endereco[i].Mantem(pAcao);
Osvaldo Junior
Curtir tópico
+ 0Posts
25/01/2012
Marco Salles
Da suporte a generrics ???
Gostei + 0
25/01/2012
Emerson Nascimento
function TclsPessoa.Count: integer;
begin
try
Result := Length(fArraycli_Endereco_Cliente);
except
Result := 0;
end;
end;
então você poderá usar assim:
for i := 0 to clsPessoa.Count-1 do
clsPessoa.array_pes_endereco[i].Mantem(pAcao);
Gostei + 0
25/01/2012
Osvaldo Junior
Gostei + 0
25/01/2012
Osvaldo Junior
Gostei + 0
25/01/2012
Marco Salles
mãos
Gostei + 0
26/01/2012
José Rubens
Não sei se foi omitido do código mas vou perguntar assim mesmo. Como estamos trabalhando com array dinâmico não temos que criar o elemento antes de atribuir um algo a ele?
Está em outra parte do código este redimensionamento do array?
Gostei + 0
26/01/2012
Marco Salles
Não sei se foi omitido do código mas vou perguntar assim mesmo. Como estamos trabalhando com array dinâmico não temos que criar o elemento antes de atribuir um algo a ele?
Está em outra parte do código este redimensionamento do array?
Bem Jose , eu não gostomuito desse Modelo , porque existem classes no Delphi que dão uma Orientação
Melhor e facilita o Trabalho neste sentido. Porém acredito que deva sim de alguma for alocar
Memória para o Array.. Uma das formas , talves não a melhor é esta
procedure Tteste.setEndereco(index: integer; const Value: TclsEndereco_Pessoa);
begin
if index > High(fArraycli_Endereco_Cliente) then
begin
index:= High(fArraycli_Endereco_Cliente)+1
SetLength(fArraycli_Endereco_Cliente,Length(fArraycli_Endereco_Cliente)+1);
end
else
begin
// destruição do Objeto para Alocação de Outro Objeto posteriomente
fArraycli_Endereco_Cliente[index].Free;
fArraycli_Endereco_Cliente[index]:=nil
end;
//Sobreposição ou Novo Objeto Atribuido ao Indice Index
fArraycli_Endereco_Cliente[index]:= value;
end;
Gostei + 0
26/01/2012
Osvaldo Junior
Marcos que classe voce usaria?
Gostei + 0
26/01/2012
Emerson Nascimento
Gostei + 0
26/01/2012
Marco Salles
Marcos que classe voce usaria?
Então o delphi é muito Rico em recursos ... existem várias coleções que se pode usar
O delphi nas versões novas nen se fala .. mas segue ai um classe pouco utilizada]
mas muito interressante .. As classes TCollectionItem e TCollection
segue
TclsEndereco_Pessoa = class (TCollectionItem)
public
Rua:String;
end;
TclsPessoa = class (TCollection)
end;
var
endereco_Um,Endereco_Dois: TclsEndereco_Pessoa;
Pessoas:TclsPessoa;
i:integer;
begin
Pessoas:= TclsPessoa.Create(TclsEndereco_Pessoa);//************************ Hegemonia ******
try
endereco_Um:=TclsEndereco_Pessoa.Create(pessoas);
endereco_Um.Rua:=Rua_Um;
Endereco_Dois:=TclsEndereco_Pessoa.Create(Pessoas);
Endereco_Dois.Rua:=Rua_Dois;
for i := 0 to pred(Pessoas.Count) do
Showmessage(TclsEndereco_Pessoa(Pessoas.GetItem(i)).Rua);
finally
pessoas.Free;
end;
end;Uma grande vantagem desta abortagem é a A restrição imposta pela TCollectionItem de criar instancias da sua
coleção unicamente da classe que foi especificada em seu contructor
Isto garante a homogenidade da coleção
Por exemplo imagine uma classe
Teste = class (TCollectionItem)
public
Rua:String;
end;
[code]/
Como o Constructor de Pessoas esta definido para a classe TclsEndereco_Pessoa so Objetos
desta instancia podem fazer parte desta coleção .. Logo ao FAzer em RumTime
[code]
obtTeste:=TTeste.Create(pessoas); //***************ERRO*****
obtTeste.Rua:=teste;
[code]Obteremos um erro em rumtime que nos alertara para a inclusão de um Objeto
que não pertence a Lista
enfim espero que te sirva para alguma coisa
Gostei + 0
Clique aqui para fazer login e interagir na Comunidade :)