tagCANDY CGI VBレスキュー(花ちゃん) の Visual Basic 2010 用 掲示板(VB.NET 掲示板) [ツリー表示へ]   [Home]
一括表示(VB.NET VB2005)
タイトルアドレスの読み出しをすっきりさせたい
記事No6949
投稿日: 2008/02/08(Fri) 11:01
投稿者ゆず
こんにちは、VB2005で開発しています。
datファイルを以下のように読み取ってCmdAdrにアドレスをCmdNameにアドレスの名前を配列で入れています。

Fnum = FreeFile()
FileOpen(Fnum, DataFile, OpenMode.Input)
For cn = 1 To AdrNo
   Input(Fnum, CmdName(cn))
   Input(Fnum, CmdAdr(cn))
Next cn
FileClose(Fnum)

アドレスの名称であるCmdNameから、アドレスCmdAdrを取得したいのでさらに

Public Function AddData(ByVal ItemName As String) As String
    Dim cn As Integer
    cn = 0
    Do
        cn = cn + 1
    Loop Until CmdName(cn) = ItemName
    AddData = Strings.Right("0000" + Hex(CmdAdr(cn)), 4)
End Function

とプロシージャを作成し、

Itemdata = AddData("アドレスの名称")

という風にアドレスを取得している状態です。Itemdataには取得したいアドレスが入ります。
この状態だと読みたいアドレスが変更されるたびにAddDataを読まなければいけない状態です。これをもう少しすっきりさせたいのですが、どうすればよいのかわかりません。
よろしくお願いします。

[ツリー表示へ]
タイトルRe: アドレスの読み出しをすっきりさせたい
記事No6952
投稿日: 2008/02/08(Fri) 12:28
投稿者魔界の仮面弁士
> CmdAdrにアドレスをCmdNameにアドレスの名前を配列で入れています。
配列ではなく、List か Dictionary で管理した方が、扱いが楽かと。

> For cn = 1 To AdrNo
変数 cn の宣言範囲を狭めるため、
 For cn As Integer = 1 To AdrNo
とした方が良いかと。

それと、EOF 判定せず、For で固定回数ループさせているようですが、
この AdrNo というのは、どういう値ですか?


>     AddData = Strings.Right("0000" + Hex(CmdAdr(cn)), 4)
CmdAdr(cn) の型が分かりませんが、もしそれが整数型であるならば、
 AddData = CmdAdr(cn).ToString("X4")
とする事で、4 桁の16進数文字列(0000〜FFFF)を得られます。

0000〜FFFF の代わりに、0000〜ffff とするならば、
 AddData = CmdAdr(cn).ToString("x4")
です。

[ツリー表示へ]