タイトル : Re^5: テキストファイルからの文字読取り 投稿日 : 2009/01/26(Mon) 00:29 投稿者 : YuO
> すみません、結局解決しておりません。 > よろしくお願いします。 問題点は何ですか? スレッドから想像して答えますが……。 > FMax = Int(FSize / 9) - 1 FMax = FSize \ 9 - 1 がしたいのでしょうか。 FSizeはLong型ですから,Intではオーバーフローする可能性があります。 > sbFile.BaseStream.Seek(rec * 9, IO.SeekOrigin.Begin) 作成したStreamReaderのBaseStreamに対してSeekした場合, そのまま読み込んだ結果について,何も保証されません。 # .NET 2.0以降の実装コード読む限り初期化直後なら問題ないのですが……。 StreamReaderのDiscardBufferedDataメソッドを呼び出して, StreamReaderの既に読み出したバッファを無効化する必要があります。 > No.Text = strLine.Substring(WHd, 3) > Name.Text = strLine.Substring(WHd + 3, 6) SubStringの引数は文字数単位であることは理解していますか? .NET Frameworkにおける文字/文字列は, バイトではなく基本的に文字を単位として取り扱います。 # Unicodeにはサロゲートとか結合文字とかありますが,このさい無視します。 実際にはバイト数単位で処理をしたいようですから, Hongliangさんが記事No.8624にて書かれているように,StreamReaderを使わずに > FileStream から直接バイトで指定バイトずつ読み取ってそれぞれEncodingで文字列化、が基本ですかね。 ということになります。 |