GRAVAR NUMA ARRAY
GALERA ESTOU COM UMA DÃÅ¡VIDA CLUEL...
COMO SOU MEIO INICIANTE... AS VEZES TENHO QUE GUARDAR INFORMAÇÕES EM FORMA DE LISTA.. EM LISTBOXES E COMBOBOXES...
Jà  OUVI FALAR QUE O CORRETO é ARMAZENAR EM ARRAYS.. COMO FAZER ISSO?
EXEMPLO...
TENHO 5 NOMES EM UM LISTBOX
COMO ADICIONAR ESTE NOMES EM UM ARRAY?
DETALHE: A QUANTIDADE DE NOMES é VARIà ÂVEL.. HORA é 5... HORA é 10... HORA é 50... HORA é 2....
COMO FAZER ISSO?
COMO SOU MEIO INICIANTE... AS VEZES TENHO QUE GUARDAR INFORMAÇÕES EM FORMA DE LISTA.. EM LISTBOXES E COMBOBOXES...
Jà  OUVI FALAR QUE O CORRETO é ARMAZENAR EM ARRAYS.. COMO FAZER ISSO?
EXEMPLO...
TENHO 5 NOMES EM UM LISTBOX
JOSé DA SILVA
MARCOS DA SILVA
LILIA DA SILVA
ERIC DA SILCA
JOSEMAR DA SILVA
COMO ADICIONAR ESTE NOMES EM UM ARRAY?
DETALHE: A QUANTIDADE DE NOMES é VARIà ÂVEL.. HORA é 5... HORA é 10... HORA é 50... HORA é 2....
COMO FAZER ISSO?
'Pode ser assim
Dim matrizLISTA() as Strring
'Declarei uma matriz
ReDim matrizLISTA ( 1 TO 5 )
'REDIMENCIONEI-A PARA 5 ELEMENTOS
matrizLISTA ( 1 ) = "JOSE DA SILVA"
matrizLISTA ( 2 ) = "JOSE DA SILVA"
matrizLISTA ( 3 ) = "JOSE DA SILVA"
matrizLISTA ( 4 ) = "JOSE DA SILVA"
matrizLISTA ( 5 ) = "JOSE DA SILVA"
LISTBOX.DATASOURCE = MATRIZLISTA
Dim matrizLISTA() as Strring
'Declarei uma matriz
ReDim matrizLISTA ( 1 TO 5 )
'REDIMENCIONEI-A PARA 5 ELEMENTOS
matrizLISTA ( 1 ) = "JOSE DA SILVA"
matrizLISTA ( 2 ) = "JOSE DA SILVA"
matrizLISTA ( 3 ) = "JOSE DA SILVA"
matrizLISTA ( 4 ) = "JOSE DA SILVA"
matrizLISTA ( 5 ) = "JOSE DA SILVA"
LISTBOX.DATASOURCE = MATRIZLISTA
Option Explicit
Dim lup As Long
Dim coringa As String
Private Sub Form_Load()
'abre o arquivo texto e atribui a chave #1 pra ele
Open "C: este.txt" For Input As #1
'aqui eu fiz um array com 100001 linhas e 11 colunas (armazena 100001 registros com até 11 nomes e sobrenomes)
'o correto aqui era fazera contagem de linhas do txt primeiro pra depois dimensionar o array, mas ele é tão rápido que
'não faz diferença (só vai alocar um pouco mais de memória da máquina.
ReDim todos(100000, 10)
'loop pra pegar os registros do txt, não precisa de incremento (movenext).
Do While Not EOF(1)
Input #1, coringa
'armazeno o valor da linha na variável coringa
For lup = 0 To UBound(Split(coringa, " "))
'dou um split (divisão) do coringa, usando o espaço " " como separador. O ubound aà de cima é pra contar quantos
'pedaços forma o nome que está naquela linha. Depois, cada pedaço é armazenado na linha/coluna
'correspondente do array
todos(qqu, lup) = Split(coringa, " ")(lup)
Next
Loop
Close #1
'aproveitei que você colocou "SILCA" pra ver se ele está funcionando corretamente
'lembre-se que trabalhamos com array a partir do Ãndice 0. Tem como apontar para o Ãndice 1 como o inicial
' mas no momento eu esqueci como fazer.
MsgBox "O terceiro nome da quarta linha é " & todos(3, 2)
End Sub
Se quiser, faça um loop preliminar, pra pegar o maior ubound(Split(coringa, " ")), armazene esse maior valor pra depois redimensionar o array corretamente. Junto com o loop pra saber o nº de linhas do txt, seu array vai ficar perfeito.
O uso de array é realmente muito eficaz, rapidÃssimo. O carregamento também é muito rápido, mesmo pra milhões de linhas. Só pra descarregar da memória é que ele demora mais um pouco, mas essa sensação só vai aparecer quando seu array bater nas centenas de milhares de linhas. Outra desvantagem - essa, real -é a falta de interface com o usuário.
Dim lup As Long
Dim coringa As String
Private Sub Form_Load()
'abre o arquivo texto e atribui a chave #1 pra ele
Open "C: este.txt" For Input As #1
'aqui eu fiz um array com 100001 linhas e 11 colunas (armazena 100001 registros com até 11 nomes e sobrenomes)
'o correto aqui era fazera contagem de linhas do txt primeiro pra depois dimensionar o array, mas ele é tão rápido que
'não faz diferença (só vai alocar um pouco mais de memória da máquina.
ReDim todos(100000, 10)
'loop pra pegar os registros do txt, não precisa de incremento (movenext).
Do While Not EOF(1)
Input #1, coringa
'armazeno o valor da linha na variável coringa
For lup = 0 To UBound(Split(coringa, " "))
'dou um split (divisão) do coringa, usando o espaço " " como separador. O ubound aà de cima é pra contar quantos
'pedaços forma o nome que está naquela linha. Depois, cada pedaço é armazenado na linha/coluna
'correspondente do array
todos(qqu, lup) = Split(coringa, " ")(lup)
Next
Loop
Close #1
'aproveitei que você colocou "SILCA" pra ver se ele está funcionando corretamente
'lembre-se que trabalhamos com array a partir do Ãndice 0. Tem como apontar para o Ãndice 1 como o inicial
' mas no momento eu esqueci como fazer.
MsgBox "O terceiro nome da quarta linha é " & todos(3, 2)
End Sub
Se quiser, faça um loop preliminar, pra pegar o maior ubound(Split(coringa, " ")), armazene esse maior valor pra depois redimensionar o array corretamente. Junto com o loop pra saber o nº de linhas do txt, seu array vai ficar perfeito.
O uso de array é realmente muito eficaz, rapidÃssimo. O carregamento também é muito rápido, mesmo pra milhões de linhas. Só pra descarregar da memória é que ele demora mais um pouco, mas essa sensação só vai aparecer quando seu array bater nas centenas de milhares de linhas. Outra desvantagem - essa, real -é a falta de interface com o usuário.
Se quiser mais detalhes sobre o desempenho dos arrays, veja:
Artigo
Projeto-exemplo
Artigo
Projeto-exemplo
Errei!!!
Fui fazer uma "limpeza" no projeto e joguei fora algumas coisas que não poderia descartar.
Option Explicit
Dim lup, [txt-color=#0000ff]qqu[/txt-color] As Long
Dim coringa As String
[txt-color=#0000ff]Dim todos() As String[/txt-color]
Private Sub Form_Load()
'abre o arquivo texto e atribui a chave #1 pra ele
Open "C: este.txt" For Input As #1
'aqui eu fiz um array com 100001 linhas e 11 colunas (armazena 100001 registros com até 11 nomes e sobrenomes)
'o correto aqui era fazera contagem de linhas do txt primeiro pra depois dimensionar o array, mas ele é tão rápido que
'não faz diferença (só vai alocar um pouco mais de memória da máquina.
ReDim todos(100000, 10)
'loop pra pegar os registros do txt, não precisa de incremento (movenext).
[txt-color=#0000ff]qqu = 0[/txt-color]
Do While Not EOF(1)
Input #1, coringa
'armazeno o valor da linha na variável coringa
For lup = 0 To UBound(Split(coringa, " "))
'dou um split (divisão) do coringa, usando o espaço " " como separador. O ubound aà de cima é pra contar quantos
'pedaços forma o nome que está naquela linha. Depois, cada pedaço é armazenado na linha/coluna
'correspondente do array
todos(qqu, lup) = Split(coringa, " ")(lup)
Next
[txt-color=#0000ff]qqu = qqu + 1[/txt-color]
Loop
Close #1
'aproveitei que você colocou "SILCA" pra ver se ele está funcionando corretamente
'lembre-se que trabalhamos com array a partir do Ãndice 0. Tem como apontar para o Ãndice 1 como o inicial
' mas no momento eu esqueci como fazer.
MsgBox "O terceiro nome da quarta linha é " & todos(3, 2)
End Sub
Fui fazer uma "limpeza" no projeto e joguei fora algumas coisas que não poderia descartar.
Option Explicit
Dim lup, [txt-color=#0000ff]qqu[/txt-color] As Long
Dim coringa As String
[txt-color=#0000ff]Dim todos() As String[/txt-color]
Private Sub Form_Load()
'abre o arquivo texto e atribui a chave #1 pra ele
Open "C: este.txt" For Input As #1
'aqui eu fiz um array com 100001 linhas e 11 colunas (armazena 100001 registros com até 11 nomes e sobrenomes)
'o correto aqui era fazera contagem de linhas do txt primeiro pra depois dimensionar o array, mas ele é tão rápido que
'não faz diferença (só vai alocar um pouco mais de memória da máquina.
ReDim todos(100000, 10)
'loop pra pegar os registros do txt, não precisa de incremento (movenext).
[txt-color=#0000ff]qqu = 0[/txt-color]
Do While Not EOF(1)
Input #1, coringa
'armazeno o valor da linha na variável coringa
For lup = 0 To UBound(Split(coringa, " "))
'dou um split (divisão) do coringa, usando o espaço " " como separador. O ubound aà de cima é pra contar quantos
'pedaços forma o nome que está naquela linha. Depois, cada pedaço é armazenado na linha/coluna
'correspondente do array
todos(qqu, lup) = Split(coringa, " ")(lup)
Next
[txt-color=#0000ff]qqu = qqu + 1[/txt-color]
Loop
Close #1
'aproveitei que você colocou "SILCA" pra ver se ele está funcionando corretamente
'lembre-se que trabalhamos com array a partir do Ãndice 0. Tem como apontar para o Ãndice 1 como o inicial
' mas no momento eu esqueci como fazer.
MsgBox "O terceiro nome da quarta linha é " & todos(3, 2)
End Sub
Tópico encerrado , respostas não são mais permitidas