Breaks ajuda linha de leitura em um arquivo texto
-
23-08-2019 - |
Pergunta
Eu tenho um arquivo TXT que eu preciso para importação através de uma aplicação, mas por alguma razão eu preciso para abri-lo no WordPad em primeiro lugar e depois salvá-lo antes de importá-lo. Eu estou supondo que tem a ver com quebras de linha. Porque se eu abri-lo no bloco de notas em primeiro lugar, não há quebras de linha, mas se eu abri-lo com o WordPad as linhas são separadas.
Alguém sabe por que isso ocorre e como posso evitar ter de abrir manualmente um arquivo e salvá-lo com o WordPad? O aplicativo é escrito em VB 6 (Yikes!).
Obrigado por qualquer ajuda
Solução
Esta é uma linha que termina problema. Seu código (e bloco de notas) quer ver Carriage Return (CR) / Line Feed (LF) pares, e esta é provavelmente CR somente (Macintosh) ou apenas arquivos LF (Unix). Wordpad é mais complacente, e sobre salvar é aparentemente (não testei) salvar pares CR / LF para você.
Você pode alterar o código no aplicativo para olhar para qualquer das terminações e tratá-los facilmente: basta parar de olhar para vbCrLf como um par e olhar para qualquer um como o fim da linha. Minha própria estratégia é procurar CR ou LF ea consumir todos os caracteres CR / LF que se seguiram:. Isso limpa linhas em branco, bem
Outras dicas
O arquivo provavelmente tem apenas caráter de um retorno de carro (CR) ou um avanço de linha (LF) no final de cada linha.
No Windows, você precisa de um personagem CR e LF no final de cada linha. Isso pode ser feito facilmente em VB6 usando a constante vbCRLF.
Por outro lado, se você é o único a leitura do arquivo, você pode determinar qual deles está em falta e manualmente adicioná-lo em como você ler o arquivo (ou seja, usando a função de substituir para converter CR em CRLF ou LF em CRLF ).
A menos que esses arquivos são muito grandes e o desempenho é crítico, lendo-os por linha pode ser feito facilmente através do objeto ADODB.Stream.
Não só este vai lidar com vários delimitadores de linha (Stream.LineSeparator = ADCR, adCRLF, ou adLF) também pode ser usado para processar arquivos contendo Unicode (UTF-16), UTF-8, página de códigos do sistema ANSI e alternativa " ANSI" codificações para outros locais.
Por exemplo, se você tem um arquivo de texto que contém "ANSI" a partir de uma localidade do idioma russo você pode definir Stream.Charset = "KOI8-r" e ler os dados com a tradução adequada em VB6 Unicode (UTF-16):
Dim Stm As ADODB.Stream
Dim Line As String
Dim Counter As Long
Set Stm = New ADODB.Stream
With Stm
.Open
.LoadFromFile "russian.txt"
.Type = adTypeText
.Charset = "koi8-r"
.LineSeparator = adLF
Do Until .EOS
Line = .ReadText(adReadLine) 'Text is in Unicode now.
Counter = Counter + 1
Loop
.Close
End With
Charset padrão é o valor "unicode" (UTF-16), mas para ler ou escrever o Córrego em ANSI com a página de códigos padrão, você pode configurá-lo para "ascii" em vez.
HKCR \ MIME \ Database \ Charset contém os valores disponíveis.