質問

私は私がアプリケーションを介してインポートする必要がありTXTファイルを持っていますが、何らかの理由で私が最初にワードパッドで開き、それをインポートする前にそれを保存する必要があります。私はそれが改行に関係している推測しています。私は改行がない、最初のメモ帳で開き、しかし、私は、ワードパッドでそれを開くと行が区切られている場合は原因ます。

この問題が発生した理由を誰もが知っていて、私は手動でファイルを開くと、ワードパッドでそれを保存することを避けることができますか? アプリは(む〜!)、VB 6で書かれています。

任意の助けてくれてありがとう。

役に立ちましたか?

解決

この問題を終了するラインです。あなたのコード(メモ帳)は、キャリッジリターン(CR)/ラインフィード(LF)のペアを見たいと思って、これはおそらく、CRのみ(Macintosh)またはLFのみ(UNIX)ファイルです。ワードパッドは、より寛容で、保存時にあなたのためのCR / LFペアを保存(それをテストしていない)、明らかである。

あなたは語尾のいずれかを探し、簡単にそれらを治療するためのアプリケーションでコードを変更することができます。ちょうどペアとしてのvbCrLfを探して停止し、いずれかの行の終わりのようになり。私自身の戦略は、CRまたはLFをスキャンし、その後、すべてのCR / LF文字を消費することである。これは、同様に空白行をクリアします。

他のヒント

ファイルは、おそらく唯一のキャリッジリターン(CR)または各行末の改行(LF)文字を持っています。

Windowsでは、各行の末尾にCRとLF文字の両方が必要です。これは、簡単に一定のvbCrLfを使用してVB6で行うことができます。

フリップ側では、ファイルを読み込む1であれば、あなたが欠落しているかを判断することができますし、手動でCRLFにCRLFまたはLFにCRを変換するために置き換える機能を使用して、すなわち(ファイルを読み込むようにそれを追加します)。

これらのファイルは非常に大きく、パフォーマンスがADODB.Streamオブジェクトを経由して容易に達成することができますラインでそれらを読んで、重要である場合を除きます。

だけでなく、これは、いくつかの行区切り文字を処理します(Stream.LineSeparator = ADCR、adCRLF、またはadLF)Unicode(UTF-16)を含むファイル、UTF-8、システムコードページANSI、および代替を処理するためにも使用することができます」 ANSI」他のロケールのエンコーディングます。

たとえば、あなたがロシア語のロケールから「ANSI」を含むテキストファイルを持っている場合は、=「KOI8-R」Stream.Charsetを設定し、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値をデフォルトの「Unicode」(UTF-16)が、あなたの代わりに「ASCII」に設定することができ、デフォルトのコードページをANSIにストリームを読み書きする。

HKCR \ MIME \ Databaseの\文字セットは、使用可能な値が含まれています。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top