Ajuda - Busca - Membros - Calendário
Versão Completa: (Resolvido) Como criar um array de ClientDataSet
Fórum Script Brasil > Programação & Desenvolvimento > Delphi, Kylix
Alexandre Malta
Pessoal, tenho que criar vários Grids utilizando ClientDataSet, mas a quantidade de Grids é variável, então pensei em usar um array de ClientDataSet, mas estou com problema na hora de criar os itens desse Array, pois quando tento criá-lo como criaria um ClientDataSet normal ele dá mensagem de Access Violetion
Tentei criar da seguinte maneira:
Declarei uma variável
_Cds : array of TClientDataSet;
To tentando criá-la da seguinte forma:
_Cds[_Cont] := TClientDataSet.Create(nil);
Onde _Cont é o contador de quantos ClientDataSet eu preciso, que varia de 1 até a quantidade especificada pelo usuário.
Alguém sabe onde estou errando???
Obrigado pela ajuda.
Churc
Opa

Antes de voce criar você precisa setar o tamanho de sua array, já que você não setou na variável (array [0..10] of TClientDataSet; nessa caso voce tem 10 do mesmo)

CODE
SetLength(_Cds, x)


onde x é referente ao número de ClientDataSets que deseja criar...

depois você pode chamar o _Cds(x) := TClientDataSet.Create(nil);

exemplo

CODE
var
  i: Integer;
begin
  SetLength(_Cds, 10); //damos a ela 10 items

  for i := 0 to 9 do
  _Cds[i] := TClientDataSet.Create(nil);


já que voce está passando nil como Owner, não se esqueça de depois limpar da memória na hora de encerrar o uso dos mesmo ou do aplicativo
e pra pegar o tamanho da array voce pode usar o Lenght(_Cds);

toda array começa com 0 como index inicial então sempre que for fazer um loop ou chamar uma array, sempre faça do 0 até um número anterior ao tamanho total

exemplo 2

CODE
var
  i: Integer;
begin
  SetLength(_Cds, 10); //damos a ela 10 items

  for i := 0 to Lenght(_Cds) - 1 do // ouu for i := 0 to Pred(Length(_Cds)) do  (Pred = Predecessor)
  _Cds[i] := TClientDataSet.Create(nil);


abrxx
Alexandre Malta
Valeu Churc
Fiz como você comentou e funcionou beleza.
Obrigado pela força.
Esta é uma versão simplificada de nosso conteúdo principal. Para ver a versão completa com maiores informações, formatação e imagens, por favor clique aqui.
Invision Power Board © 2001-2012 Invision Power Services, Inc.