• Revista PROGRAMAR: Já está disponível a edição #53 da revista programar. Faz já o download aqui!

seminas

problema em defenir uma matriz(array)

10 mensagens neste tópico

Boas! Antes da minha questão quero aqui dar os meus parabéns ao vosso site está excelente, já há alguns dias que venho cá coscuvilhar, e acho mesmo muito bom! e então a minha duvida é o seguinte, estou a tentar aprender outra vez vb6, há alguns anos já tinha começado mas parei e agora por gosto só, estou outra vez a dar uns passos,bom queria  saber se é possível defenir uma matriz em que eu não sei á partida quantos elementos essa matriz vai ter porque é algo que o utilizador vai dizer,tipo:

dim x as integer

dim n_vaos(x) as integer

x=text1.text

algo asiim do género só que ainda não consegui porque dá-me sempre erro!!

Obrigado!

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Repara no que estás a fazer:

dim x as integer 'Dimensiona a variável, e com vb esta é automaticamente inicializada a zero(0)
dim n_vaos(x) as integer 'Declara um array de dimensões x. Neste caso 0.

Explica-me como vais criar um array com zero elementos?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Dois exemplos:

- Usando array simples -

Dim n_vaos() As Integer

Private Sub Command1_Click()
    Dim total As Integer

    ' Verifica o tamanho do array +1
    total = UBound(n_vaos) + 1
    ' Redimenciona o array
    ReDim Preserve n_vaos(total)
    ' Coloca o valor no array
    n_vaos(total) = 1

End Sub

Private Sub Form_Load()
    ' Inicia o array
    ReDim Preserve n_vaos(0)
End Sub

- Usando colecções -

Dim c As New Collection

Private Sub Command1_Click()
    c.Add "Texto"
End Sub

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

AH!! erro básico, não passar valor para a variável,  :-[

jpaulino ainda sou muito verde,podes dar-me uma luz acerca do ubound?? se bem percebi é para verificar o tamanho da variável??

obrigado a todos!! :thumbsup: 

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

jpaulino ainda sou muito verde,podes dar-me uma luz acerca do ubound?? se bem percebi é para verificar o tamanho da variável??

O ubound verifica o tamanho do array não o tamanho da variável. Se tens 10 elementos ele retoma-te 9 porque o array tem base 0.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Por isso é que é  total = Ubound(n_vaos) + 1 ??  para o facto de comecar em 0 e para ter o valor certo adiciona-se mais 1?

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

O Redim redimenciona o número de elementos no array. Por isso vais buscar o tamanho actual e aumentas mais um (que é o que vais inserir).

O preserve é para preservar os anteriores, ou seja, manter.

No caso das collections não tem dimenção pré-definida e podesse simplesmente adicionar itens.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

So uma coisa... se fizeres preserve muita vez pode crachar o sistema... porque o preserve mete os valores na memoria... eu digo isto porque existem malware e alguns viros que fazem este tipo de rotinas...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

para isso existe a instrução Erase (variavel)

nao sabia dessa...

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Crie uma conta ou ligue-se para comentar

Só membros podem comentar

Criar nova conta

Registe para ter uma conta na nossa comunidade. É fácil!


Registar nova conta

Entra

Já tem conta? Inicie sessão aqui.


Entrar Agora