Ir para o conteúdo
seminas

problema em defenir uma matriz(array)

Mensagens Recomendadas

seminas    0
seminas

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!

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
anolsi    16
anolsi

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
seminas    0
seminas

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: 

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
seminas    0
seminas

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?

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
jpaulino    106
jpaulino

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.

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
asworm    1
asworm

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...

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


×

Aviso Sobre Cookies

Ao usar este site você aceita os nossos Termos de Uso e Política de Privacidade