Ir para conteúdo
Fórum Script Brasil
  • 0

Duvida Rápida Com Arquivos


Andersonjb

Pergunta

11 respostass a esta questão

Posts Recomendados

  • 0

Leia ele todo (com o método ReadToEnd() de um objeto StreamReader) para uma string e divida esta pelo caracter separador de linhas (vbCrLf, vbCr ou vbLf) o que vai resultar em um array. Daí basta verificar o tamanho do array (propriedade Length do mesmo).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Eu tenho que colocar um VbcrLf no final de cada linha, certo?

Não, provavelmente o arquivo já terá o ENTER (chr(13) & chr(10)), que é o vbCrLf, no final de cada linha (se foi gravado em um editor de textos no Windows).

Mas me diz uma coisa: a propriedade Lenght retorna o numero de caracteres, como eu vou saber o numero de linhas dessa maneira?

Não, você está confundindo com a função Len(). No caso aí, é a propriedade Length, que todo array possui e que diz a quantidade de elementos contidos no mesmo.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Hum, entendi... mas tem como se me mostrar isso em código pra ficar mais claro blink.gif ???

É, mais claro do que isso não tem como fazer:

Dim f As New IO.StreamReader("c:\pasta\arquivo.txt")
Dim texto As String = f.ReadToEnd()
Dim linhas As String() = texto.Split(vbCrLf)
Dim qt As Integer = linhas.Length

MessageBox.Show("Quantidade de linhas no arquivo: " & qt.ToString())

Note que eu fiz tudo conforme descrevi no outro post.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
texto.Split(vbCrLf)
O que é isso blink.gif ? A função Split !
Split, do Inglês "dividir", faz exatamente o que o nome sugere: divide uma string através de um ou mais delimitadores (caracteres que ditam as diferentes partes da string). Exemplo:
dim frase as string = "isto é um teste"
dim palavras() as string = frase.Split(" ")

for each palavra as string in palavras
  messagebox.show(palavra)
next

Certo? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Rapaz, há cada dia aprendendo mais! Eu nem imaginava que esse Split Existia...

Aproveitando o Post, Gray, pra não cometer Flood, deixa eu perguntar uma coisa: Quando eu abor o arquivo usando uma StringReader, dessa maneira:

Dim f As New IO.StreamReader("c:\pasta\arquivo.txt")

eu estou abrindo um Arquivo com o formato Ascii, correto? Mas e se eu quissese abrir qualquer tipo de arquivo Unicode, como eu faria???

Link para o comentário
Compartilhar em outros sites

  • 0
Rapaz, há cada dia aprendendo mais! Eu nem imaginava que esse Split Existia...

Aproveitando o Post, Gray, pra não cometer Flood, deixa eu perguntar uma coisa: Quando eu abor o arquivo usando uma StringReader, dessa maneira:

Dim f As New IO.StreamReader("c:\pasta\arquivo.txt")
eu estou abrindo um Arquivo com o formato Ascii, correto? Mas e se eu quissese abrir qualquer tipo de arquivo Unicode, como eu faria???
StringReader ou StreamReader? Você falou o primeiro, mas o código está utilizando o segundo. Aliás, nem teria sentido fazer esta pergunta para o primeiro, então creio que seja mesmo o segundo. Por padrão os arquivos *já* são abertos como Unicode. Se você quiser abrir como ASCII é que você deve fazer isso:
Dim f As New IO.StreamReader("c:\pasta\arquivo.txt", System.Text.Encoding.ASCII)

Ok? wink.gif

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0
Hé, eu me enganei! Mas assim, os arquivos são abertos como Unicode, correto? Mas e se o arquivo for ASCII, ele tambem, abre normal? E na hora de salvar, ele converte ou salva como Unicode tambem?

Só vai ser necessário salvar como Unicode se existir algum caracter de código superior a 255, caso contrário o arquivo vai ser ASCII/ANSI. Os primeiros 256 caracteres Unicode são os mesmos da tabela ASCII/ANSI.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

Visitante
Este tópico está impedido de receber novos posts.


  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,5k
×
×
  • Criar Novo...