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

thekrypton

Copiar conteúdo de .txt para matriz

4 mensagens neste tópico

boas

estou a aprender a trabalhar em vb e estou com uma dúvida...

preciso de copiar valores numéricos que estão num ficheiro .txt para uma matriz em vb e depois mostra-la numa janela (de seguida vou trabalhar essa matriz, mas isso já é outra história),

no ficheiro .txt os valores estão assim:

21  23    55

85  51    23...

ou seja, 3 colunas e um número incerto de linhas (não mais do que 30), os valores são separados entre si por um/tecla "tab".

Como é que eu faço isso?

Obrigado

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Analisa primeiro o numero de valores em cada linha e de seguida o número de linhas.

Com esses valores, basta fazeres um Redim de uma array para os novos alcances e depois basta percorrer e atribuír.

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Creio que a dúvida era mais como separo os valores de cada linha.

Crias um array de strings, lês uma linha e fazes split e no fim convertes para integer ou assim

Este exemplo separa os valores por ";"

                    Dim filename As String = MainPath & "Valor\" & Now.Year & Format(Mes, "00") & Format(Dia, "00") & ".csv"
                    If My.Computer.FileSystem.FileExists(filename) = True Then
                        Dim Ficheiro As New System.IO.StreamReader(filename)
                        Dim Linha As String
                        Dim Valores() As String
                        Linha = Ficheiro.ReadLine ' A 1ª linha é´o cabeçalho (é lixo)
                        For hora As Integer = 0 To 23
                            For Minuto As Integer = 0 To 59
                                Linha = Ficheiro.ReadLine
                                Valores = Linha.Split(";") ' Delimeter
                                frmMain.DadosMinuto(Mes, Dia, hora, Minuto).Ligado = Valores(1)
                                frmMain.DadosMinuto(Mes, Dia, hora, Minuto).Funcionamento = Valores(2)
                                frmMain.DadosMinuto(Mes, Dia, hora, Minuto).Emissão = Valores(3)
                                frmMain.DadosMinuto(Mes, Dia, hora, Minuto).Concentração = Valores(4)
                            Next
                        Next
                        Ficheiro.Close()
                    End If

0

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites

Antes disso tem que preparar a array. Penso que essa era a dúvida.

Enfim, eis uma solução aqui (se a copiares sem entender só te estás a enganar a ti próprio)

        Dim Linhas As Integer = 0
        Dim Valores As Integer = 0
        Dim ListaLinhas As New List(Of String)
        Dim Matriz(,) As String = Nothing
        Dim OFD As New OpenFileDialog
        OFD.ShowDialog()

        Dim SR As New IO.StreamReader(OFD.FileName)

        While Not SR.EndOfStream
            ListaLinhas.Add(SR.ReadLine())
        End While

        Linhas = ListaLinhas.Count - 1
        Dim P() As String = Split(ListaLinhas(0), vbTab)
        Valores = P.Length - 1

        ReDim Matriz(Valores, Linhas)

        For i As Integer = 0 To ListaLinhas.Count - 1
            Dim PL() As String = Split(ListaLinhas(i), vbTab)
            For ii As Integer = 0 To PL.Length - 1
                Matriz(ii, i) = PL(ii)
            Next
        Next

        Stop

Metes isso num botão, por exemplo. O código vai parar no STOP para poderes meter um watch na array e verificar se os valores estão lá bonitos.

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