[リストへもどる]
一括表示

投稿時間:2003/12/04(Thu) 13:12
投稿者名:やん
Eメール:
URL :
タイトル:
テキストファイル入力について
度々利用させて頂いてます。
VB6.0でプログラム作成しております。
改行コードがCRLF以外のコード(CR又はLF)のテキストファイルを読み込む
場合、Line Inputステートメントが使用できないと思いますが、Input関数
等で読み込んで独自に判断してコーディングするしかないのでしょうか?
何か良い方法ってあればご参考にしたいと思っております。
なんでも結構ですのでアドバイスいただければと思います。
よろしくお願い致します。

投稿時間:2003/12/04(Thu) 19:28
投稿者名:nobu
Eメール:
URL :
タイトル:
Re: テキストファイル入力について
Line Input で読み込んで
tmp = Replace(tmp,vbCr,vbCrLf)
tmp = Replace(tmp,vbLf,vbCrLf)

その後 tmp を Print すれば良いでしょう。
試して下さい。

投稿時間:2003/12/05(Fri) 11:47
投稿者名:やん
Eメール:
URL :
タイトル:
Re^2: テキストファイル入力について
> Line Input で読み込んで
> tmp = Replace(tmp,vbCr,vbCrLf)
> tmp = Replace(tmp,vbLf,vbCrLf)
>
> その後 tmp を Print すれば良いでしょう。
> 試して下さい。

Line InputではCRLFまでを読み込もうとするので、LF等の場合、
Line Inputで読み込むこと自体出来ないようなのですが・・・。

投稿時間:2003/12/05(Fri) 13:01
投稿者名:nanashi
Eメール:
URL :
タイトル:
Re^3: テキストファイル入力について
> Line InputではCRLFまでを読み込もうとするので、LF等の場合、
> Line Inputで読み込むこと自体出来ないようなのですが・・・。

CRLFが無い場合は一度にファイルの最後まで読み込まれるだけです。


> > tmp = Replace(tmp,vbCr,vbCrLf)
> > tmp = Replace(tmp,vbLf,vbCrLf)

ただ上記のやり方だと最初に変換したvbCrLfのvbLfの部分がまたvbCrLfに変わってしまうので
(もともとCRだったところが最終的にCRCRLFになります)
一度別のものに変えたほうが良いと思います。

例えば↓とか。

tmp = Replace$(tmp, vbCr, vbNullChar)
tmp = Replace$(tmp, vbLf, vbNullChar)
tmp = Replace$(tmp, vbNullChar, vbCrLf)

投稿時間:2003/12/05(Fri) 16:21
投稿者名:やん
Eメール:
URL :
タイトル:
Re^4: テキストファイル入力について
> > Line InputではCRLFまでを読み込もうとするので、LF等の場合、
> > Line Inputで読み込むこと自体出来ないようなのですが・・・。
>
> CRLFが無い場合は一度にファイルの最後まで読み込まれるだけです。
>
>
> > > tmp = Replace(tmp,vbCr,vbCrLf)
> > > tmp = Replace(tmp,vbLf,vbCrLf)
>
> ただ上記のやり方だと最初に変換したvbCrLfのvbLfの部分がまたvbCrLfに変わってしまうので
> (もともとCRだったところが最終的にCRCRLFになります)
> 一度別のものに変えたほうが良いと思います。
>
> 例えば↓とか。
>
> tmp = Replace$(tmp, vbCr, vbNullChar)
> tmp = Replace$(tmp, vbLf, vbNullChar)
> tmp = Replace$(tmp, vbNullChar, vbCrLf)

すみません。説明が不足していたようでm(_ _)m
読み込むファイルというのが100MBを超えたりするのでどうしても
一度に読み込むことが不可能でして。
やはり、32767Byteずつ読み込んで独自に改行コード(CR、LF、CRLF)
を判断しながら1行ずつ返すオリジナルのReadLine関数なるものを
作成するしかないんでしょうか。
その場合のReadLine関数のコーディングがいまいち分からなくて・・・

投稿時間:2003/12/05(Fri) 18:04
投稿者名:エメス
Eメール:
URL :
タイトル:
Re^5: テキストファイル入力について
> すみません。説明が不足していたようでm(_ _)m
> 読み込むファイルというのが100MBを超えたりするのでどうしても
> 一度に読み込むことが不可能でして。
> やはり、32767Byteずつ読み込んで独自に改行コード(CR、LF、CRLF)
> を判断しながら1行ずつ返すオリジナルのReadLine関数なるものを
> 作成するしかないんでしょうか。
> その場合のReadLine関数のコーディングがいまいち分からなくて・・・

本当、、最終手段ですが、時間や労力、スキルがないならコード変換は他人に頼る。

yahooで、「CR CRLF コード変換 DLL」等で検索をかければ、いくつか
フリーでコード変換のDLLが手にはいります。

VBで最初にDLLをよびだして、CRLFファイルに変換してから
読み込んでしまわれては??

投稿時間:2003/12/05(Fri) 20:43
投稿者名:花ちゃん
Eメール:
URL :
タイトル:
Re^5: テキストファイル入力について
> 読み込むファイルというのが100MBを超えたりするのでどうしても
> 一度に読み込むことが不可能でして。

不可能ではないと思いますが、そもそも何をしたいのでしょうか?
そのファイルの改行コードを変換するだけが目的ですか?
そのファイルを表示する必要はないのですか?そのファイルは何でご覧になるのですか?

表示が必要ならリッチテキストボックスに一気に読み込みコード変換してもいいし
それらのサンプルはここのファイル操作関係やFileSystemObject関係のところにもあるし
つい最近良く似た投稿もあったので検索して見てもかなりでてきますよ。
(No.6608 を応用すればかなり高速で処理できるかと思います)

投稿時間:2003/12/05(Fri) 21:43
投稿者名:魔界の仮面弁士
Eメール:
URL :
タイトル:
Re^4: テキストファイル入力について
> tmp = Replace$(tmp, vbCr, vbNullChar)
> tmp = Replace$(tmp, vbLf, vbNullChar)
> tmp = Replace$(tmp, vbNullChar, vbCrLf)

改行コードを CrLf に揃えるなら、こんな書き方もあります。
   tmp = Replace(tmp, vbCrLf, vbLf)
   tmp = Replace(tmp, vbCr, vbLf)
   tmp = Replace(tmp, vbLf, vbCrLf)


…ちなみに、Replace$という関数はありません。
(オブジェクトブラウザで、$の付く物を調べてみましょう)

Replace関数は、戻り値がStringな事もあり、$をつけても一応は動作しますが、
文字列を返す関数であっても、中には、$を付けるとエラーになる物(Partition関数など)も
ありますので、むやみに $ を付けない方が良いかと思います。