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

タイトル Re^2: 配列時の書き方に関して
投稿日: 2013/09/25(Wed) 21:56
投稿者ミスターK
丁寧な解説、回答ありがとうございました。
大変参考になりました。


> > ※の行を以下のように書き換えました
> 対応する関数が無いからとはいえ、VB6 の MidB$ 関数を、VB.NET の Mid 関数に
> 置き換えてはいけません。VB6 の Mid$ 関数を VB.NET Mid 関数に置きかえるなら良いですが。
>
>
> > →astrDat(lngIx) = System.Text.Encoding.Unicode.GetBytes(Mid(strData, .lngPosB, .lngLenB))
> bytDataCnv と strData の関係を説明してもらわないと、意図が読み取れないです。
>
> VB6 の方は、「Shift_JIS バイナリ(の一部)を、文字列に変換するコード」なのに、
> VB.NET の方は、「文字列(の一部)を、Unicode バイナリに変換するコード」に
> 置き換えているようですが、そもそも gf_GetValue 関数で何をさせたいのでしょうか?
>
>
> > Dim lngLenB As Integer
> 変数名のプレフィックスが型名と一致していません。
> 典型的な「システムハンガリアンの弊害」ですね…。
>
>
> > VB6.0のプログラムをVB.NETへ移行しているのですが
> 変数宣言が「lngLenB」「lngPosB」と書かれているも関わらず、
> コードでは「.lngPosB」「.lngLenB」という With 的表現が使われて
> いることから推察するに、これは実際のコードでは無いのですよね。
>
>
> とりあえず、
>
> ・bytDataCnv は Shift_JIS のバイナリ を格納した Byte 型の一次元配列
> ・lngPosB は、バイナリの切り出し開始位置(1〜)を示す Long 値
> ・lngLenB は、切り出すバイト長(0〜)を示す Long 値
> ・MidB$ 関数を使って、Shift_JIS バイナリの一部を切り出す
> ・astrDat(lngIx) には、切り出したバイナリを Unicode 変換して String として格納する
>
> という意図だと推察しますが、それならば
>  astrDat(lngIx) = System.Text.Encoding.GetEncoding(932).GetString(bytDataCnv, lngPosB - 1, lngLenB)
> と書いてみてください。
>
> 「.GetEncoding(932)」の部分は「.GetEncoding("Shift_JIS")」とも書けます。
> (.Default を使う事もできますが、その場合、日本語OS以外での動作が異なります)
>
> bytDataCnv が シフトJIS のバイナリなので、Encoding も Shift_JIS を指定しています。
> bytDataCnv が UTF-16 のバイナリの場合は、Encoding を Unicode にしてください。

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

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