どうもはじめまして。
VBのLine Inputについて質問があります。
改行コードがCR/LFじゃない場合は、改行ごと取得できない
のでしょうか?
123,45,↓
67,89,0↓
A,BCD,E
というのが
123,45,67,89,0A,BCD,Eとなってしまうのです。
各行は固定長ではありません。
このようなテキストを行ごと取得する場合には
どのような方法があるでしょうか?
わかりにくい説明だとは思いますがご教授ください。
どうぞ宜しくお願い致します。
Line Input で読み込んだ1行のデータを tmp とすると
下記のようにすれば大抵はOKと思います。
tmp = RePlace(tmp,vbCr,vbCrLf)
tmp = RePlace(tmp,vbLf,vbCrLf)
UNIXのテキストファイルだと、改行コードが (LF) なので困
りますよね。
Line Input #ステートメントの仕様上、改行コードとして扱
われるものは (CR) または、(CR + LF)の場合に限ります。
今回のように、特別なコードを改行コードとしたい場合はとり
あえず、 Line Inputで読込んでおき(バッファ)、そのバッ
ファからInStr関数で改行コードを検索し、1行ずつ切出して
いく関数を自作すると良いと思います。
お世話になります。
モミジさん、uchiさんご返答ありがとうございます。
やはりLine Inputで読込んでおき、改行コードを検索し、
1行ずつ取得しようと思います。
その場合、変数等に一度に全部に取り込んで保持していく
しかないのでしょうか?
1回のファイル取り込み時にどのくらいのデータが来るわか
らないのです。
一度に10MB分ぐらいのデータでも可能でしょうか?
以上よろしくお願い致します。
私の提示した案も試されたのですか?
どう言う方法でやろうと構いませんが、せっかくの好意を
無駄にするような事の無いように。
(これを貴方へのフォローは最後とさせて頂きます)
何時も思うのですが
> 一度に10MB分ぐらいのデータでも可能でしょうか?
...と他人に聞くのでは無くて、自分でテスト出来る環境が
あるのですから実際にやってみたらどうなのですか?
VBのHELPで調べるとString型の最大サイズが記述されています。
可変長文字列の場合は、約2GByteまでの文字を格納できるよう
です。10MByteくらいなら問題なさそうですね。
ただ、使用メモリが気になるというのであれば、BinaryでOpenし
て、Byte配列に読込む方法にすればできそうです。
この質問の↓には何が入っているのだろうか?
そしてなぜ " モミジ " さんの方法でやらないのか?
不思議だ?
ツイート | ![]() |