Preencher array dentro de umwhile

.NET

08/05/2012

Como eu faço para preencher um array de n-posições, dentro de um while?
Atenção!!!!
Não é lista e nem for. É array dentro de um while

if(dr.HasRows){
while(dr.read())
preenche_aqui_meu_array;
Pjava

Pjava

Curtidas 0

Respostas

Joel Rodrigues

Joel Rodrigues

08/05/2012

Cria um contador, por exemplo:
int cont = 0;
while(dr.Read())
{
vetor[cont] = elemento;
cont++
}
GOSTEI 0
Pjava

Pjava

08/05/2012

Realmente eu fiz isso e deu certo. Em realidade eu tenho uma dúvida e eu não soube explicar, razão pela qual ainda não resolvi. É o seguinte:
Eu tenho um recordset que me traz N registros. Meus arrays são inicializados com valor de uma variável, que chamo de dia, dessa forma:

doublearrayEmissor = new double[dia];

Essa variável, ela me traz a quantidade de dias de um mes. No meu while, vai trazendo informações, mas meu array somente suporta, por exemplo, 30 posições, para o mes de abril. Aí vem a dúvida. Preciso travar os registros parao tamanho do array(tentarei fazer isso por query) e onde não haver informações, preencher o array com valor 0(zero). Com lista eu não consegui isso, por isso fiz com array. Pode ser que eu esteja atropelando o negócio,mas acho ser isso. Essa é minha duvida de como preencher array em um while.Limitar o tamanho do while. Desculpa-me se não fui claro. Qualquer coisa eu tento esclarecer mais.
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/05/2012

Vamos lá, um pouco de teoria antes. O comando WHILE é executado ENQUANTO uma condição (booleana) for atendida, certo? Então eu posso querer executar esse laço enquanto meu contador for menor que um certo valor, correto? Ficaria semelhante a isso:
int cont = 0;
while(dr.Read() && cont < dia)
{
vetor[cont] = elemento;
cont++
}


Com isso, quando o valor de cont for igual a quantidade máxima de dias, o laço é interrompido e não passa para a próxima iteração. Como começamos a contar do zero, usamos o operador < para parar o laço. Se iniciássemos de 1, deveria ser usado <=.

Deu pra sacar a ideia?
GOSTEI 0
Pjava

Pjava

08/05/2012

Joel, primeiro obrigado pelas suas importantísimas ajuda para mim. O problema é que eu não estou sabendo passar as minhas dúvidas. Agora fazendo um debug na aplicação, acho que posso explicar melhor. A query me traz o código, o somatório e o dia. Então, para cada série do array, eu preciso informar que ele deve pegar pelo indice dia, assim. Vamos dizaer(é o rea l hoje) assim:
Aquery lista codigo 0 do dia 1 ao 21. Depois ela lista código 24 do dia 5 ao 25. Bem, acontece que como eu estou adicionando em cima do i, quando eu começo a preencher o array que leva o código 24, por exemplo, ele já começa na posíção 22 e não na 5. Eu deveria atribuir a posição do array ao dia e não fazer um incremento em i, pois isso faria ir até o fim, sem respeitaras posições. Como eu faço isso?
GOSTEI 0
Joel Rodrigues

Joel Rodrigues

08/05/2012

Não sei se entendi exatamente, mas o índice do item do array que você vai passar não é exatamente o contador, é isso? Esse índice é o número do dia? Se for, você pode passar a variável dia entre colchetes, assim, dia será o índice do item. Seria isso?
GOSTEI 0
POSTAR