tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板)
[ツリー表示へ]  [ワード検索]  [Home]

タイトル 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で文字列化、が基本ですかね。
ということになります。

- 関連一覧ツリー をクリックするとツリー全体を一括表示します)

古いスレッドにレスはつけられません。