[リストへもどる]   [VBレスキュー(花ちゃん)]
一括表示

投稿時間:2005/07/04(Mon) 02:20
投稿者名:りこ
URL :
タイトル:
リッチテキストボックスでのファイル読込
こんばんは。
いつも大変お世話になっております。

さて、今回は「リッチテキスト内へファイルを読込」処理について悩んでおります。
問題@ 大容量(1000KB以上)のファイルの場合「ファイルにこれ以上データがありません」
のメッセージが表示されリッチテキスト上にデータが表示されません。
コードは以下のようにしております。
*******************************************
Open Filename For Input As #1
    lngLength = LOF(1)
    strBuf = StrConv(InputB(lngLength, #1), vbUnicode)
Close #1
Text1.Text = strBuf
*******************************************

問題A リッチテキストの「LoadFile」にてデータを表示すると
大容量のファイルでも正常に開くのですが、各ファイルによっては文字化けが発生します。

以上のように問題が発生し正常にファイルを読込むことができません。
何か良い方法をご存知の方、ご教示願いませんでしょうか?
(リッチテキストにこだわらなくても結構です。)

また、各行に行番号を振りたいのですがその為には、ファイル内のデータを1行1行読込んでいくしか
ないで
しょうか?
(5万行ほどのデータがあるのですが・・・)

非常に困っております。
VBのプロの皆様、ヒントだけでも構いませんので宜しくお願いいたします。

投稿時間:2005/07/04(Mon) 19:16
投稿者名:K.J.K.
Eメール:akiya@koalanet.ne.jp
URL :
タイトル:
Re: リッチテキストボックスでのファイル読込
エラー処理を抜きにすれば、

Dim iFile As Integer
Dim iLength As Long
Dim abBuffer() As Byte

iFile = FreeFile
Open FileName For Binary Access Read As iFile
iLength = LOF(iFile)
ReDim abBuffer(0& To iLength - 1&)
Get iFile, , abBuffer
Close iFile
Text1.Text = StrConv(abBuffer, vbUnicode)

のような感じでは。
# 直打ちなので、ミスがあるかも。

しかしまぁ、サイズが大きいときには勧められない読み込み方ですね。

投稿時間:2005/07/04(Mon) 21:43
投稿者名:Starfish
Eメール:
URL :
タイトル:
Re: リッチテキストボックスでのファイル読込
> 問題(1) 大容量(1000KB以上)のファイルの場合「ファイルにこれ以上データがありません」
> のメッセージが表示されリッチテキスト上にデータが表示されません。
> コードは以下のようにしております。
> *******************************************
> Open Filename For Input As #1
>     lngLength = LOF(1)
>     strBuf = StrConv(InputB(lngLength, #1), vbUnicode)
> Close #1
> Text1.Text = strBuf
> *******************************************

 Inputモードでオープンしているため、X'00'やX'1A'が入っていると
その文字は読み飛ばされます。そのため、最終的にファイルサイズ分の
データが読み込めずに「ファイルにこれ以上データがありません」の
エラーになっているんだとおもいます。Binaryモードにすれば、エラー
はなくなるのではないでしょうか。根本的には、入力のファイルが
おかしいので、そちらをチェックしてください。

> 問題(2) リッチテキストの「LoadFile」にてデータを表示すると
> 大容量のファイルでも正常に開くのですが、各ファイルによっては文字化けが発生します。

 これも、結局は(1)と同じです。元のファイルの中身をチェックしてください。

投稿時間:2005/07/04(Mon) 23:28
投稿者名:りこ
URL :
タイトル:
Re^2: リッチテキストボックスでのファイル読込
>  Inputモードでオープンしているため、X'00'やX'1A'が入っていると
> その文字は読み飛ばされます。そのため、最終的にファイルサイズ分の
> データが読み込めずに「ファイルにこれ以上データがありません」の
> エラーになっているんだとおもいます。Binaryモードにすれば、エラー
> はなくなるのではないでしょうか。根本的には、入力のファイルが
> おかしいので、そちらをチェックしてください。

詳しい詳細ありがとうございます。
また、コードの詳細をも掲載していただきありがとうございました。

ファイルの中身を確認しました結果、確かにおかしな(制御コード)データが入っているようです。
しかし、これをも表示しなければならないので、
Binaryにて開いて見ます。
ありがとうございました。