0

アプリケーション経由でインポートする必要がある TXT ファイルがありますが、何らかの理由で、最初にワードパッドで開き、インポートする前に保存する必要があります。ラインブレイクと関係があると思います。最初にメモ帳で開くと改行はありませんが、ワードパッドで開くと行が区切られます。

これが発生する理由と、ファイルを手動で開いてワードパッドで保存する必要を回避する方法を知っている人はいますか? アプリは vb 6 で書かれています (いいね!)。

助けてくれてありがとう

4

3 に答える 3

2

これは行末の問題です。コード (およびメモ帳) は、キャリッジ リターン (CR)/ライン フィード (LF) のペアを表示する必要があります。これはおそらく CR のみ (Macintosh) または LF のみ (Unix) のファイルです。ワードパッドはより寛容で、保存時に CR/LF ペアを保存しているようです (テストしていません)。

アプリケーションのコードを変更して、任意の末尾を検索し、簡単に処理することができます。vbCrLf をペアとして検索するのをやめて、どちらかを行末として検索するだけです。私自身の戦略は、CR または LF をスキャンし、その後に続くすべての CR/LF 文字を消費することです。これにより、空白行もクリアされます。

于 2009-05-22T17:12:24.310 に答える
0

これらのファイルが非常に大きく、パフォーマンスが重要でない限り、行ごとの読み取りは ADODB.Stream オブジェクトを介して簡単に実行できます。

これは複数の行区切り記号 (Stream.LineSeparator = adCR、adCRLF、または adLF) を処理するだけでなく、Unicode (UTF-16)、UTF-8、システム コードページ ANSI、および代替の「ANSI」エンコーディングを含むファイルの処理にも使用できます。他のロケールの場合。

たとえば、ロシア語ロケールの "ANSI" を含むテキスト ファイルがある場合、Stream.Charset = "koi8-r" を設定し、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) ですが、デフォルトのコードページを使用して ANSI でストリームを読み書きするには、代わりに「ascii」に設定できます。

HKCR\MIME\Database\Charset には、使用可能な値が含まれています。

于 2009-05-28T13:31:46.640 に答える
0

ファイルには、各行の終わりにキャリッジ リターン (CR) またはライン フィード (LF) 文字しかない可能性があります。

Windows では、各行の終わりに CR と LF の両方の文字が必要です。これは、定数 vbCRLF を使用して VB6 で簡単に実行できます。

反対に、あなたがファイルを読んでいる場合は、ファイルを読んでいるときにどれが欠けているかを判断し、手動で追加できます (つまり、replace 関数を使用して CR を CRLF に、または LF を CRLF に変換します)。

于 2009-05-22T17:12:29.550 に答える