Pregunta

Tengo un archivo TXT que necesito para importar a través de una aplicación, pero por alguna razón que necesito para abrirlo en WordPad primero y luego guardarlo antes de importarlo. Supongo que tiene que ver con saltos de línea. Porque si me abro en el bloc de notas en primer lugar, no hay saltos de línea, pero si abro con WordPad se separan las líneas.

¿Alguien sabe por qué ocurre esto y cómo puedo evitar tener que abrir manualmente un archivo y guardarlo con Wordpad? La aplicación está escrito en VB 6 (¡Ay!).

Gracias por cualquier ayuda

¿Fue útil?

Solución

Este es un problema de final de línea. Su código (y el bloc de notas) quieren ver el retorno de carro (CR) / avance de línea (LF) pares, y esto es probablemente CR solamente (Macintosh) o un archivo de sólo LF (Unix). Wordpad es más indulgente, y al ahorro es aparentemente (no lo he probado) ahorro de pares CR / LF para usted.

Puede cambiar el código de la aplicación para buscar cualquiera de las terminaciones y tratarlos fácilmente: basta con dejar de buscar vbCrLf como un par y buscar ya sea como el final de la línea. Mi propia estrategia consiste en escanear para CR o LF y los consumen todos los caracteres CR / LF siguientes:. Que esto aclare las líneas en blanco, así

Otros consejos

El archivo probablemente sólo tiene un retorno de carro (CR) o un carácter de avance de línea (LF) al final de cada línea.

En Windows, se necesita tanto un carácter CR y LF al final de cada línea. Esto se puede hacer fácilmente en VB6 utilizando el vbCRLF constante.

Por otro lado, si usted es el que lee el archivo, se puede determinar cuál falta y añadir manualmente en al leer el archivo (es decir, utilizando la función de reemplazar para convertir CR en CRLF o LF en CRLF ).

A menos que estos archivos son muy grandes y el rendimiento es crítico, leerlos por la línea que puede lograrse fácilmente a través del objeto ADODB.Stream.

Esto no sólo manejar varios delimitadores de línea (Stream.LineSeparator = ADCR, adCRLF, o adLF) también puede ser utilizada para procesar archivos que contienen Unicode (UTF-16), UTF-8, página de códigos del sistema ANSI, y alternativa " ANSI" codificaciones de otros lugares.

Por ejemplo, si tiene un archivo de texto que contiene "ANSI" de una configuración regional de idioma ruso se puede establecer Stream.Charset = "koi8-r" y leer los datos con la traducción apropiada en 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 por defecto el valor "Unicode" (UTF-16), pero para leer o escribir en la Corriente del ANSI con la página de códigos predeterminada, puede ponerlo en "ASCII" en su lugar.

HKCR \ MIME \ Database \ juego de caracteres contiene los valores disponibles.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top