- ベストアンサー
テキストファイル内の改行について
お助け願います。 VB6にてあるテキストファイルを読み込んでいます。 このテキストファイルは普通にノートパッドで開くと、 1行が1024文字で開かれてしまいます。 秀丸などで開くと、改行がうまくいき必要なデータの並びになります。 VB6からこのテキストファイルを開いて読み込む際にも、 秀丸のような改行で読込みたいのですが、できるのでしょうか? ノートパッドでも秀丸のような改行で開くことは可能なのでしょうか? ご教授下さい。 例) ノートパッドで開くと 1234567890123456789012345678901234567890 秀丸で開くと 1234567890 1234567890
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
データの中に改行コードなどがあっても、 実際は見えるものではありません。 『OxOa』はC言語風の表記ですね。 たとえば、メモ帳などで、ABCと打てばABCと表示されます。 しかし矢印キーなどはいくら押しても文字は出ません。 カーソルが動くだけです。 押しても文字として表示されないものは、 制御コードとか呼ばれるものです。 改行コードもそうですが、 Windowsなら[CR][LF](キャリッジリターンとラインフィールド) 16進の数字で表すと、 [CR]=0D [LF]=0A とパソコン内部では数字で表現されます。 秀丸でも[CR][LF]以外の改行コードでも正しく読み込みますので、 必要なデータの並びになります。 ノートパッドなどで読んでも決められた改行コードでないため、 一行で表示されてしまう訳です。 その該当するコードが何かが分かれば、 VBで読み込んで改行表示する事は可能になります。 テキストボックスへの表示なら、 読み込んだテキストデータを一文字毎に調べて、 改行コードでなければテキストボックスに加算。 改行コードに相当する文字であれば、『VBCrLf』を加算 それを文字数分繰り返す。 以外に、検索置換をする(こちらが早いと思います) テキストボックスに改行がある文字を表示する場合、 MultiLineプロパティをTrueにする必要があります。
その他の回答 (3)
- kokorone
- ベストアンサー率38% (417/1093)
バイナリエディタ(フリーウェア)で対象ファイルを見てみると、 特殊記号を含め、文字コードで見ることができますので、改行が、 CR・LFの2バイトになっているか、確認できますよ。
補足
ありがとうございます。 バイナリエディタで見たところ、どうも改行前には、"."がついているようです。 いまいち私には仕組みがよく理解できないのですが、 ヒントは得られた気がします。 これをどうやってVB6.0で扱うかってのがわかりませんが(>_<)
- PED02744
- ベストアンサー率40% (157/390)
改行コードが LF(0x0a)しかないファイル(UNIXやlinuxで作成したファイル) なのではないですか? もし、そうなら、読むときに 0x0aという文字がきたら改行(VBCrLf)とみなしてあげればよいです。
補足
回答ありがとうございます。 何で作ったファイルかとちょっとわからないのですが、 相当昔のシステムで作ったものと思われます。 詳しく教えてほしいのですが、 そのテキストファイル中にはOxOaという文字はありません。 これは実際のテキスト中に書かれているものですか?
- j_nishiz
- ベストアンサー率26% (183/697)
このデータは1024行のデータで、秀丸で一行10文字で設定しているのではありませんか? もしそうでしたら、読み込んでから10文字ずつ区切って格納すれば良いでしょう。 改行をいれる必要が有れば、10文字でくぎってVBCrLfをつければ良いです。
補足
回答ありがとうございます。 いえ、書いたのはあくまでサンプルです。 特に10行区切りってわけではないんです。 秀丸は必要なデータ分でうまく改行されますが、 ノートパッドではただダラダラと1024行まで書かれてます。 秀丸だと何行目から何行目までが何のデータがわかるのですが、 ノートパッドだと非常にわかりずらいのです。 データ長によっては固定でもないので。 秀丸は何に反応して、その位置で改行を入れてるのかもよくわかりません。 ん~。。。。
お礼
回答ありがとうございます。 やっと理解できました。 私のとった方法は、 Replace(textA, vbLf, vbNewLine) のようにしました。バイナリで見ると、[LF]=0Aになってましたので、 これを改行コードに変換してみると、うまく改行されたファイルになってました。 これをもう一度開き直して処理しようと思います。 ありがとうございました。