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

Foi útil?

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.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top