Ir para o conteúdo
axpppp

load de ficheiro txt para uma matriz

Mensagens Recomendadas

axpppp    0
axpppp

boas

o ficheiro txt tem isto la dentro

20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020
20202020202020202020

Dim Lista As New ArrayList
        Dim Leitor As New StreamReader("C:\Documents and Settings\axpp\Ambiente de trabalho\pap@bomberman\pap\Resources\TextFile1.txt")

        Do While Leitor.Peek() >= 0

            Dim Linha As String = Leitor.Read

            For Each posicao As Char In Linha



            Next

        Loop

eu andei a ver um topico daqui do forum http://www.portugal-a-programar.pt/index.php?showtopic=191 e cheguei a conclusao que deve ser assim que tenho que fazer....mas agora o que me mete confusao é como fazer o load dos valores para as posiçoes da matriz... :wallbash:

cumpz

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

Uma solução sapateira.

Há maneiras de conseguir o mesmo apenas com uma leitura de ficheiro.

Foi o que saiu no momento, estou um pouco ocupado. :biggrin:

Num projecto novo, adiciona um button e substituí todo o código, para veres a funcionar antes de analisar, por este:

Public Class Form1

    Dim Matriz(0, 0) As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
        Dim ofd As New OpenFileDialog

        ofd.ShowDialog()

        'vamos abrir o ficheiro a primeira vez apenas para determinar os alcances
        Dim Prep As New IO.StreamReader(ofd.FileName)

        'alcance horizontal
        Dim Elem1 As Integer = (Prep.ReadLine.Trim.Length) - 1
        Dim Elem2 As Integer = 0

        While Not Prep.EndOfStream
            Prep.ReadLine()
            'alcance vertical
            Elem2 += 1
        End While

        'redeclaramos a matriz com os novos alcances
        ReDim Matriz(Elem1, Elem2)

        Elem2 = 0
        Prep.Close()

        'por fim, abrimos de novo o ficheiro para ler os valores
        Dim SR As New IO.StreamReader(ofd.FileName)

        While Not SR.EndOfStream
            Dim Linha As String = SR.ReadLine

            'envia para o sub, o alcance horizontal, a actual linha e o texto dessa linha
            PreencheMatriz(Elem1, Elem2, Linha)
            Elem2 += 1
        End While

        SR.Close()


    End Sub

    Private Sub PreencheMatriz(ByVal Elem1 As Integer, ByVal elem2 As Integer, ByVal Linha As String)
        'percorre toda a linha, na matriz e vai buscar os valores à linha lida do ficheiro
        For i As Integer = 0 To Elem1
            Matriz(i, elem2) = CInt(Strings.Mid(Linha, i + 1, 1))
        Next
    End Sub
End Class

Com isto, ele detecta automáticamente o formato e mete-te um caractere por posição.

Dizes que o formato é sempre o mesmo, e isso torna as coisas mais fáceis e muito mais pequenas.

Public Class Form1

    Dim Matriz(19, 19) As Integer

    Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click

        Dim ofd As New OpenFileDialog

        ofd.ShowDialog()

        Dim X As Integer = -1
        Dim Y As Integer = -1
        Dim SR As New IO.StreamReader(ofd.FileName)

        While Not SR.EndOfStream
            Y += 1
            Dim L() As Char = SR.ReadLine.ToCharArray

            For Each C As Char In L
                X += 1
                Matriz(X, Y) = C.ToString
            Next
            X = -1
        End While

        SR.Close()
    End Sub

End Class

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
axpppp    0
axpppp

mas tipo há maneira de fazer isso sem ter que ir buscar o ficheiro .txt???

tipo ter o ficheiro nas ressources e o programa ir logo buscar directo?

o resto tive a analisar e acho que é assim  :(

Partilhar esta mensagem


Link para a mensagem
Partilhar noutros sites
ribeiro55    44
ribeiro55

Claro.

Ao invés de usares um openfiledialog, referes-te directamente ao ficheiro na solução ou coisa parecida.

Mostrei-te com openfiledialog para generalizar as coisas.

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