Jump to content

[RESOLVIDO] Detectar mudança de linha


Ivo Pereira
 Share

Recommended Posts

Boas pessoal,

num programa meu queria que o programa ao ler o texto (.txt), coloca-se cada linha numa listbox, mas queria que detecta-se quando há mudança de linha (já tentei com o vbNewLine e não dá (Constant cannot be the target of an assignment.).

Se alguém me puder ajudar agradecia.

Se não me conseguirem dizer com aquilo do detectar quando há mudança de linha, queria ao menos que me ajudassem a desenrascar isto a meter por linha na listbox.

Thx cumps

Link to comment
Share on other sites

Aqui está um exemplo genérico que depois podes adaptar.

Dim conjBytes() As Byte = My.Computer.FileSystem.ReadAllBytes('fiche.txt')
Dim texto As String = ""
For Each b As Byte In conjBytes
     texto &= ChrW(b)
Next
texto = texto.Replace(ChrW(10), "")
Dim linhas() As String = texto.Split(ChrW(13))

Se tiveres dúvidas, pergunta.

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

O ReadAllBytes não era suposto ver o tamanho do ficheiro, ou estou em erro?

O ReadAllBytes lê cada byte do ficheiro.

Reapara que enquanto o ReadAllText lê todos os caracteres do ficheiro, o ReadAllBytes lê o seu código Unicode. Desta maneira, não existem problemas, que o ReadAllText têm, em comer acentos e cedilhados...

O que significa &=?

é uma abreviatura. É igual isto

texto = texto & ChrW(b) 

O que é o ChrW?

Transforma o valor Unicode num caracter.

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

O ReadAllBytes lê cada byte do ficheiro.

Reapara que enquanto o ReadAllText lê todos os caracteres do ficheiro, o ReadAllBytes lê o seu código Unicode. Desta maneira, não existem problemas, que o ReadAllText têm, em comer acentos e cedilhados...

é uma abreviatura. É igual isto

texto = texto & ChrW(b) 

Transforma o valor Unicode num caracter.

Eh la, hoje já aprendi umas coisinhas novas 😄

Olha amanhã logo testo o código porque agora tenho de ir estudar (a pedido dos meus pais xD).

Depois amanhã digo algo.

Cumps e obrigado

Off-topic: anolsi discordo da tua frase de Um bom programador é um grande preguiçoso..., acho que ficava melhor Um bom programador é um grande curioso...

Link to comment
Share on other sites

Já agora outra alternativa:

        Dim txtLines() As String
        txtLines = My.Computer.FileSystem.ReadAllText("C:\textfile.txt").Split(vbNewLine)
        For Each line As String In txtLines
            Debug.Write(line.ToString)
        Next

anolsi,

Não compliques!

Um abraço

Link to comment
Share on other sites

Já agora outra alternativa:

        Dim txtLines() As String
        txtLines = My.Computer.FileSystem.ReadAllText("C:\textfile.txt").Split(vbNewLine)
        For Each line As String In txtLines
            Debug.Write(line.ToString)
        Next

anolsi,

Não compliques!

Um abraço

Mas eu já tive problemas a ler cedilhados, acentos. Eram comidos pelo ReadAllText. E desta maneira não.

"Nós somos o que fazemos repetidamente, a excelência não é um feito, e sim, um hábito."
Não respondo a questões por PM que possam ser colocadas no fórum!

Link to comment
Share on other sites

Já agora outra alternativa:

        Dim txtLines() As String
        txtLines = My.Computer.FileSystem.ReadAllText("C:\textfile.txt").Split(vbNewLine)
        For Each line As String In txtLines
            Debug.Write(line.ToString)
        Next

anolsi,

Não compliques!

Um abraço

Fizeste-me fechar o Visual Basic Express, mas ainda vou abrir para experimentar da tua maneira, já que da maneira do anolsi me deu umas cenas esquisitas e deixo essa maneira para ver e entender amanhã. LOL 😄

Mas eu já tive problemas a ler cedilhados, acentos. Eram comidos pelo ReadAllText. E desta maneira não.

Por acaso comigo nunca deu qualquer problema. 👍

Link to comment
Share on other sites

Mas eu já tive problemas a ler cedilhados, acentos. Eram comidos pelo ReadAllText. E desta maneira não.

Isso usa-se mais para copiar ficheiros byte a byte e não para ler ficheiros. O problema dos cedilhados, acentos, etc, está relacionado com a codificação do ficheiro. Nesse caso utilizas StreamReader e defines uma codificação. Ex:

Dim sr As New StreamReader(Ficheiro, Encoding.Default)

Link to comment
Share on other sites

Fizeste-me fechar o Visual Basic Express, mas ainda vou abrir para experimentar da tua maneira, já que da maneira do anolsi me deu umas cenas esquisitas e deixo essa maneira para ver e entender amanhã. LOL 😄

Mas o metodo do anolsi também funciona! 👍

Link to comment
Share on other sites

Bom, acabei por usar o teu jpaulino, thx 🙂

Obrigado também ao anolsi, pelo esforço e trabalho realizado (apesar de eu ter usado o do jpaulino, pois era o tal código que usava mas que me tinha esquecido 😛 ), e obrigado também pelas dicas do &= e do Chrw 😉

Obrigado aos dois 😄

[glow=green,2,300]RESOLVIDO

😄 [/glow]
Link to comment
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
 Share

×
×
  • Create New...

Important Information

By using this site you accept our Terms of Use and Privacy Policy. We have placed cookies on your device to help make this website better. You can adjust your cookie settings, otherwise we'll assume you're okay to continue.