Frage

Ich habe eine TXT-Datei, die ich über eine Anwendung importieren müssen, aber aus irgendeinem Grund muss ich es in wordpad zuerst öffnen und es dann speichern, bevor es zu importieren. Ich vermute, es mit Zeilenumbrüchen zu tun hat. Denn wenn ich es in Notepad öffnen Sie zuerst, es gibt keine Zeilenumbrüche, aber wenn ich es mit WordPad öffnen die Linien getrennt.

Weiß jemand, warum dies geschieht und wie ich manuell mit vermeiden kann, um eine Datei zu öffnen und es mit WordPad speichern? Die App ist in vb geschrieben 6 (Huch!).

Vielen Dank für jede Hilfe

War es hilfreich?

Lösung

Dies ist eine Zeile endet Problem. Ihr Code (und Notizblock) wollen Carriage Return (CR) / Zeilenvorschub (LF) Paare, und dies ist wahrscheinlich CR sehen nur (Macintosh) oder LF nur (Unix) Datei. Wordpad ist mehr vergeben, und auf Speichern offenbar ist (habe es nicht getestet) für Sie CR / LF-Paare speichern.

Sie können den Code in der Anwendung ändern für eine der Endungen zu suchen und sie leicht zu behandeln: stoppen nur für vbCrLf als Paar sucht und sucht entweder als das Ende der Linie. Meine eigene Strategie ist für CR oder LF und verbrauchen alle CR / LF-Zeichen zu scannen, die gefolgt. Dies löscht Leerzeilen als auch

Andere Tipps

Die Datei hat wahrscheinlich nur ein Carriage Return (CR) oder ein Zeilenvorschub (LF) Zeichen am Ende jeder Zeile.

In Windows müssen Sie sowohl ein CR und LF-Zeichen am Ende jeder Zeile. Dies kann leicht in VB6 getan werden, indem die Konstante vbCRLF verwendet wird.

Auf der anderen Seite, wenn Sie derjenige Lesen der Datei sind, können Sie bestimmen, welche fehlt und es manuell hinzufügen in, wie Sie die Datei lesen (dh mit der Ersetzen-Funktion CR in CRLF oder LF in CRLF umwandeln ).

Es sei denn, diese Dateien sind sehr groß und Leistung entscheidend ist, so dass sie durch die Linie lesen kann über das Objekt ADODB.Stream leicht erreicht werden.

Dies wird nicht nur mehrere Zeilentrennzeichen Griff (Stream.LineSeparator = ADCR, adCRLF oder ADLF) auch verwendet werden können Dateien mit Unicode (UTF-16), UTF-8, System-Codepage ANSI und Alternative "zu verarbeiten ANSI“Codierungen für andere Gegenden.

Wenn Sie zum Beispiel eine Textdatei, die „ANSI“ von einem russischen Gebietsschema enthalten Sie Stream.Charset = „koi8-r“ gesetzt und die Daten mit dem richtigen Übersetzung in VB6 Unicode (UTF-16) lesen:

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 standardmäßig auf den Wert „Unicode“ (UTF-16), aber den Strom in ANSI mit dem Standardzeichensatz zu lesen oder schreiben Sie können es auf „ascii“ statt.

HKCR \ MIME \ Database \ Charset die verfügbaren Werte enthält.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top