Ir para conteúdo
Fórum Script Brasil
  • 0

Arrays E Ubound


cyberalexxx

Pergunta

já discuti algo parecido uma vez com o UrsoLouco, mais hoje tava no meio de uma programação quando me deparei com o seguinte:

A função Ubound retorna a quantidade de itens de um vetor ou o maior valor da dimensão de um vetor???

Quando eu declaro que uma variavel vai ter 3 elementos tipo DIM a(3) e peço o Ubound(a) o retorno é 3.

Quando não declaro a variavel e crio o array através de split, sabendo que a array gerada tem 3 elementos e peço o Ubond o retorno é 2.

Olha um código que demonstra isso:

<%
dim a(3)
a(0) = "valor1 de aa"
a(1) = "valor2 de aa"
a(2) = "valor3 de aa"

response.write Ubound(a) & " é o Valor do Ubond de a " & "<br>"


dados = "valor1 de b,valor2 de b,valor3 de b"
b = split(dados,",")

response.write Ubound(b) & " é o Valor do Ubond de b " & "<br>"
%>

alguém tem algo a dizer???

Link para o comentário
Compartilhar em outros sites

3 respostass a esta questão

Posts Recomendados

  • 0

E ai Alexxx!!

Brother!!!

Foi como falei naquele POST (Brain Storn - Chuva de Idéias)... este lance de UBound Realmente confude a cuca.

Segunda a MSDN, retorna o maior 'indice' de um vetor..... e não a quantidade de itens...

Quebrando uma variavel com Split, sem redimensionamento, novamente, se usado uBound ele vai retornar o maior indice e não a quantidade...

Concorda ?

Quando não declaro a variavel e crio o array através de split, sabendo que a array gerada tem 3 elementos e peço o Ubond o retorno é 2.
Neste caso, vai ser exibido dois, pois todo vetor sempre se inicia de 0. Concorda ? ***************************************************************** Veja agora, um código, mostrando o mesmo exemplo:
<%

 Dim Analista(5)

 Analista(0) = "The Dark0"
 Analista(1) = "Alexx"
 Analista(2) = "Bolomaster"
 Analista(3) = "MarioFDF"

 Programador = Array()
 Contador = 0 

 Redim Preserve Programador(Contador)
 Contador = Contador + 1 
 Programador(0) = "ursolouco" 
 Redim Preserve Programador(Contador)
 Contador = Contador + 1 
 Programador(1) = "Victor"
 Redim Preserve Programador(Contador)
 Contador = Contador + 1
 Programador(2) = "Nelson"
 Redim Preserve Programador(Contador)
 Contador = Contador + 1
 Programador(3) = "Guto"
 Redim Preserve Programador(Contador)
 Contador = Contador + 1
 Programador(4) = "Bareta"
 Redim Preserve Programador(Contador)
 Contador = Contador + 1
 Programador(5) = "Resopi"
 Redim Preserve Programador(Contador)
 Contador = Contador + 1
 Programador(6) = "Hara"
 Redim Preserve Programador(Contador)
 Contador = Contador + 1
 Programador(7) = "Renatinha_Muito_Gatinha"


 Response.Write("<p>O maior indice do array Analista é :" & UBound(Analista) & "</p>")

 'OutPut/Saida: 5
 'Porque seu vetor, foi declarado, com 5 indices;
 'Lembre-se que UBound, vai pegar o maior indice do vetor e não itens.


 Response.Write("<p>O maior indice do array Programador é: " & UBound(Programador) & "</p>")

 'OutPut/Saida: 7
 'UBound vai percorrer todos os itens do seu vetor, iniciado de 0

%>

wink.gif

Editado por ursolouco
Link para o comentário
Compartilhar em outros sites

  • 0

Concordo com tudo que você disse!!!

Na minha "humilde" opinão isso é um "bug" da função Ubound, pois acredito que independetemente da maneira que a array foi criada (Dim(x), split(), ou array() com redim()) o tratamento deveria ser o mesmo.

Lembra que discutimos sobre contador??

se vou fazer um loop para exibir dados de um array criado com DIM(), tenho que usar o método que tinha dito, ex:

<%
dim a(3)
a(0)= 1
a(1)= 2
a(2)= 3
'mostrar dados
for i = 0 to Ubound(a) - 1 ' ta contando de 0 a 2
response.write a(i) & "<br>"
next
%>
agora caso esteja usando split() ou array() com redimensionamento o contador tem que ser:
for i = 0 to Ubound(a)

Realmente confunde.

Mais agora apesar de não estar tecnicamente explicado, o jeito é aceitar o funcionamento da função.

Link para o comentário
Compartilhar em outros sites

  • 0
Realmente confunde.

Mais agora apesar de não estar tecnicamente explicado, o jeito é aceitar o funcionamento da função.

É Brother!!

É por isso que somos programador, porque somos confusos e nossa confusão, no confusamento de idéias, temos confusões de onde confundidamente saem resultados confulsos.. laugh.gif

Mas é isso ae, sempre que temos que trabalhar com vetor, cada um interpreta ou entende de uma forma, certa ou não, ela vai ser clara à você, fazendo com que o resultado, no final seja o mesmo wink.gif

Mas é isso ae Brother.... fórum é bom por isso, porque temos capacidade de gerar boas e sadias discussões sobre o assunto, seria bom, se todo lugar fosse assim.

Um Forte Abraço!!!

[ursão] - Seu Brother de discussão!!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...