Jump to content
Fórum Script Brasil
  • 0

Arrays E Ubound


cyberalexxx
 Share

Question

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 to comment
Share on other sites

3 answers to this question

Recommended Posts

  • 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

Edited by ursolouco
Link to comment
Share on other 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 to comment
Share on other 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 to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

 Share



  • Forum Statistics

    • Total Topics
      150.7k
    • Total Posts
      648.4k
×
×
  • Create New...