Array Multidimensional
Senhores,
Estou trabalhando com um array multidimensional do tipo ListItem e estou com uma pequena dificuldade.
Como faço para enviar todos elementos de uma coluna para outra variável? Ex:
Estou tentando fazer algo parecido com isso mas não estou conseguindo.
Alguém pode me dar alguma :idea: por favor?
Grato desde já
Estou trabalhando com um array multidimensional do tipo ListItem e estou com uma pequena dificuldade.
Como faço para enviar todos elementos de uma coluna para outra variável? Ex:
var Teste: array[1..15, 0..3] of listItem teste2: array of listitem begin ... teste2 := teste[][2] ... end;
Estou tentando fazer algo parecido com isso mas não estou conseguindo.
Alguém pode me dar alguma :idea: por favor?
Grato desde já
Cristiam
Curtidas 0
Respostas
Massuda
14/07/2005
Do modo como foram declarados os arrays, você tem que copiar item por item. Como o array Teste é estático (tamanho pré definido) enquanto Teste2 é dinâmico, o código seria algo assim...
var I: Integer; ... // ajusta o tamanho de Teste2 SetLength(Teste2, 15); // copia os dados for I := 1 to 15 do begin // Teste2 é indexado a partir de ZERO Teste2[I-1] := Teste[I, 2]; end; // depois de usar, libere a memória Teste2 := nil; ...
GOSTEI 0
Cristiam
14/07/2005
Eu queria usar matriz dinâmica nos dois, porém quando eu faço isso:
Eu não consigo fazer com q quando passe aí, ele continue com os valores anteriores, sabe pq?
var i: integer teste: array of array of ListItem begin i := 0; ... i := i + 1; setLength(teste, i) .... end
Eu não consigo fazer com q quando passe aí, ele continue com os valores anteriores, sabe pq?
GOSTEI 0
Massuda
14/07/2005
Eu queria usar matriz dinâmica nos dois...
Não entendi a dúvida, mas vai aí alguns exemplos (mudei um pouco o código) com array dinâmico bidimensional...var I: Integer; ... // ajusta uma dimensão de Teste SetLength(Teste, 4); for I := Low(Teste) to High(Teste) do begin // ajusta a outra dimensão de Teste SetLength(Teste[I], 15); end; // ajusta o tamanho de Teste2 SetLength(Teste2, 15); // copia os dados for I := Low(Teste2) to High(Teste2) do begin Teste2[I] := Teste[2, I]; end; // depois de usar, libere a memória Teste2 := nil; for I := Low(Teste) to High(Teste) do begin Teste[I] := nil; end; Teste := nil; ...
var I: Integer; ... // ajusta uma dimensão de Teste SetLength(Teste, 4); for I := Low(Teste) to High(Teste) do begin // ajusta a outra dimensão de Teste SetLength(Teste[I], 15); end; Teste2 := Teste[2]; ...
GOSTEI 0
Cristiam
14/07/2005
Opa Massuda,
Muito obrigado era isso mesmo que eu queria.
Porém estou com outra dúvida.
Por que quando eu faço isso dá erro?
Eu adiciono valores para as duas primeiras colunas e quando tento adicionar na terceira, ele me dá um o seguinte erro:
[color=red:9d760c0851] Referência de objeto não definida para uma instância de um objeto.[/color:9d760c0851]
Sabe como posso resolver isso? :oops:
Muito obrigado era isso mesmo que eu queria.
Porém estou com outra dúvida.
var teste1: ListItem[0..15][0..3]; strTemp: String; begin ..... strtemp := ´balandia´ teste1[1][2].Text := strTemp; .... end;
Por que quando eu faço isso dá erro?
Eu adiciono valores para as duas primeiras colunas e quando tento adicionar na terceira, ele me dá um o seguinte erro:
[color=red:9d760c0851] Referência de objeto não definida para uma instância de um objeto.[/color:9d760c0851]
Sabe como posso resolver isso? :oops:
GOSTEI 0
Massuda
14/07/2005
teste1: ListItem[0..15][0..3];
Isto não é válido em Delphi/ObjectPascal, mas imagino que tenha sido um erro de digitação.Por que quando eu faço isso dá erro?
Teria que ver como a matriz está sendo inciada.GOSTEI 0
Cristiam
14/07/2005
OPa.... Foi mal Massuda:
var
teste1 :array[0..14][0..3] of ListItem.
É o sono q tá complicado aqui.
Eu tenho q dar um .create na matriz para poder colocar algum valor nela?
var
teste1 :array[0..14][0..3] of ListItem.
É o sono q tá complicado aqui.
Eu tenho q dar um .create na matriz para poder colocar algum valor nela?
GOSTEI 0
Massuda
14/07/2005
Eu tenho q dar um .create na matriz para poder colocar algum valor nela?
Não precisa (nem tem acho) fazer um .Create... eu queria ver como você carrega os ListView na matriz.GOSTEI 0
Cristiam
14/07/2005
Bom, deixa ver se eu consigo te explicar....
Eu tenho 2 listBoxs e 1 CheckBox.
Para os itens do listBox, eu estou armazenado da seguinte forma.
o problema é que como eu tenho um checkbox, eu quero adicionar todos os itens selecionados no checkbox da seguinte forma.
e após pegar todos os selecionados e colocar na string, aí sim quero passar para o listItem.
E o meu problema está nesta parte de adicionar os valores do checkbox no ListItem. Sabe Como me ajudar por gentileza?
Grato desde já pela paciência. :oops:
Eu tenho 2 listBoxs e 1 CheckBox.
Para os itens do listBox, eu estou armazenado da seguinte forma.
var teste1: array[0..15][0..3] of ListItem begin teste1[0][0] := listbox1.SelectedItem; teste1[0][1] := listbox2.selectedItem; teste[0][2] := .....; end
o problema é que como eu tenho um checkbox, eu quero adicionar todos os itens selecionados no checkbox da seguinte forma.
var tmpText, tmpValor : String; blListTeste : Checkbox begin .... for j := 0 to cblistTeste.Items.count -1 do begin if cblistTeste.Items[j].Selected then begin tmpTexto := tmpTexto + cblistTeste.Items[j].Text + ´;´; tmpValor := tmpValor + cblistTeste.Items[j].Value + ´;´; end; end; .... end.
e após pegar todos os selecionados e colocar na string, aí sim quero passar para o listItem.
teste1[0][2].Text := tmptextp; teste1[0][2].Value := tmpValor;
E o meu problema está nesta parte de adicionar os valores do checkbox no ListItem. Sabe Como me ajudar por gentileza?
Grato desde já pela paciência. :oops:
GOSTEI 0
Massuda
14/07/2005
Só para confirmar... Pelos seus posts anteriores, imagino que isso seja relacionado com ASP.NET certo?
Bom, deixa ver se eu consigo te explicar....
Eu tenho 2 listBoxs e 1 CheckBox....
Pelo que eu entendi, você tem dois ListBoxs (que permitem selecionar vários itens?) e um CheckBox, mas eu não entendi quem precisa receber a lista dos itens selecionados nem de qual ListBox você precisa pegar os itens selecionados.GOSTEI 0