Domanda

Ho un file TXT che ho bisogno di importare tramite un'applicazione, ma per qualche ragione ho bisogno di aprirlo in WordPad e poi salvarlo prima di importarlo. Sto indovinando che ha a che fare con le interruzioni di riga. Perche 'se ho aperto nel blocco note prima, non ci sono interruzioni di riga, ma se apro con WordPad le linee sono separati.

Qualcuno sa il motivo per cui questo accade e come posso evitare di dover aprire manualmente un file e salvarlo con WordPad? L'applicazione è scritto in VB 6 (Yikes!).

Grazie per qualsiasi aiuto

È stato utile?

Soluzione

Questa è una linea che termina problema. Il tuo codice (e blocco note) vogliono vedere Carriage Return (CR) Linea di alimentazione coppie / (LF), e questo è probabilmente solo CR (Macintosh) o il file LF solo (Unix). Wordpad è più indulgente, e su Save è apparentemente (non ho provato) salvataggio coppie CR / LF per voi.

È possibile modificare il codice dell'applicazione per cercare una qualsiasi delle terminazioni e trattarli con facilità: basta smettere di cercare vbCrLf come coppia e cercate sia come la fine della linea. La mia strategia è quella di eseguire la scansione di CR o LF e le consumare tutti i caratteri CR / LF che seguirono:. Questo cancella righe vuote e

Altri suggerimenti

Il file ha probabilmente solo un ritorno a capo (CR) o un carattere Line Feed (LF) alla fine di ogni riga.

In Windows, è necessario sia un CR e il carattere LF alla fine di ogni riga. Questo può essere fatto facilmente in VB6 utilizzando il vbCrLf costante.

D'altra parte, se quella lettura del file, è possibile determinare quale manca e manualmente aggiungerlo come si legge il file (ad esempio, utilizzando la funzione di sostituzione per convertire CR in CRLF o LF in CRLF ).

A meno che questi file sono molto grandi e le prestazioni sono critiche, la loro lettura per riga può essere realizzata facilmente tramite l'oggetto ADODB.Stream.

Non solo questo gestire diversi delimitatori di linea (Stream.LineSeparator = ADCR, adCRLF, o adLF) può anche essere utilizzato per elaborare i file contenenti Unicode (UTF-16), UTF-8, sistema tabella codici ANSI, e alternativo " ANSI" codifiche per gli altri locali.

Per esempio, se si dispone di un file di testo contenente "ANSI" da un locale di lingua russa è possibile impostare Stream.Charset = "koi8-r" e leggere i dati con la traduzione corretta in 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

default charset da valore "unicode" (UTF-16), ma per leggere o scrivere la Corrente in ANSI con la tabella codici predefinita è possibile impostare su "ascii" invece.

HKCR \ MIME \ Database \ Charset contiene i valori disponibili.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top