PEGAR DADOS DE ARQUIVO TXT E PASSAR PARA VARI?VEIS

PAMALAGOLI 21/11/2014 12:31:45
#442683
Bom dia.
Tenho um arquivo .txt que contém oito dados por registro nesta forma: numero, data, dezena 1, dezena 2, dezena 3, dezena 4, dezena 5, dezena 6.
Tento acessá-lo para pegar somente os numeros que estão contidos nas dezenas, mas sempre dá uma msg de erro.


O código:
Existem vários comentários que fazem parte dos testes que fiz.
Erro que aparece:
Error [ô]13[ô] em tempo de execução
Type mismatch ( incompatibilidade de tipo)


Private Sub Command1_Click()
[ô]Essa primeira parte é só para carregar os números primos contidos na variável Arq_numeros_primos. Funciona corretamente.
Dim Arq_numeros_primos As String
Dim numpri(1 To 25) As Integer
Arq_numeros_primos = [Ô]C:/Documents and Settings/PauloM/Desktop/Programa Megasena/numprim/numeros_primos.txt[Ô]
Open Arq_numeros_primos For Input As #1
Do While Not EOF(1)
For i = 1 To 25
Line Input #1, reg
numpri(i) = reg
Debug.Print reg, numpri(i)
Next
Loop
Close #1

[ô]Dezenas = Split(Linha, [Ô];[Ô])

[ô]Aqui na segunda parte é que dá dando o erro.
Dim Arq_Resultado_da_mega_sena As String
Dim regi As Variant [ô]Já tentei como String, Integer mas dá a mesma msg de erro
[ô]Dim valores As String
Dim cont As Integer
[ô]Dim dez(7) As String [ô]Matriz com 8 elementos. Tmb tentei e dá mesma msg erro
[ô]Dim dezenas As Integer
Dim tamanho As Integer
Dim linhas As Variant [ô]Já tentei como String, Integer mas dá a mesma msg de erro
Dim d1, d2, d3, d4, d5, d6 As Integer
Arq_Resultado_da_mega_sena = [Ô]C:/Documents and Settings/PauloM/Desktop/Programa Megasena/numprim/Resultado da Mega-sena.txt[Ô]
[ô]cont = 0
Open Arq_Resultado_da_mega_sena For Input As #1
Do While Not EOF(1)
[ô]For X = 1 To 3 [ô]1653
[ô]For Y = 3 To 8
[ô]cont = cont + 1
For i = 1 To 3
Line Input #1, regi
[ô]dez = Split(regi, [Ô];[Ô])
linhas = Split(regi, [Ô];[Ô]) [ô]Na execução a varável linhas está vazia, regi contém o primeiro registro do arquivo. e i = 1
linhas = Trim(linhas) [ô] O erro tá aparecendo nesta linha
tamanho = Len(linhas)
d1 = Right(linhas, 2) [ô]d1 = dez(2)
d2 = Mid(linhas, tamanho - 5, tamanho - 3) [ô]d2 = dez(3)
d3 = Mid(linhas, tamanho - 7, tamanho - 5) [ô]d3 = dez(4)
d4 = Mid(linhas, tamanho - 9, tamanho - 7) [ô]d4 = dez(5)
d5 = Mid(linhas, tamanho - 11, tamanho - 9) [ô]d5 = dez(6)
d6 = Mid(linhas, tamanho - 13, tamanho - 11) [ô]d6 = dez(7)

Debug.Print regi, d1, d2, d3, d4, d5, d6 [ô]dez,

If i = 3 Then [ô]cont = 3 Then [ô]São 1653 registros. Como estou testando, faço o programa parar após o terceiro registro.
Exit For
Exit Do
End If

Next
Loop
Close #1
End Sub

Obrigado por qualquer ajuda que puderem me dar!

Paulo
MARCELO.TREZE 21/11/2014 20:13:21
#442690
colega todas variveis que irão receber dados do split devem ser declaradas como array, e string assim

Dim Linha() As String

porem você não pode colocar um valor entre as aspas pois o split pode gerar um valor variavel, e o vb não aceita

[txt-color=#e80000]Dim Dez(7) As String <------errado[/txt-color]

[txt-color=#007100]Dim Dez() As String<----Certo[/txt-color]

tome cuidado quando trabalhar com array

boa sorte
Faça seu login para responder