none
My.Resourcesに配列は定義できますか? RRS feed

回答

  • Dim a As String = My.Resources.Test0
    Dim b As String = My.Resources.Test1
    Dim c As String = My.Resources.Test2

    のような複数のリソースを、

    Dim a As String = My.Resources.Test(0)
    Dim b As String = My.Resources.Test(1)
    Dim c As String = My.Resources.Test(2)

    のように取得させることはできませんが、

    Dim a As String = My.Resources.ResourcesManager.GetString("Test"
     & CStr(0))
    Dim b As String = My.Resources.ResourcesManager.GetString("Test"
     & CStr(1))
    Dim c As String = My.Resources.ResourcesManager.GetString("Test"
     & CStr(2))
    のように記述することはできます。
    2017年4月13日 2:58
  • 有難うございます。

    リソース内に配列を持つのは現実的ではないという事ですね。

    リソースにしないといけない理由はありません。

    VB自体あまり詳しくないのでトンチンカンな事を言うかもしれませんが、
    グローバルな定数の保存場所として、リソースを使うのが便利かなと思ったのです。

    2017年4月13日 3:13

すべての返信

  • 直接、\My Project\Resources.resxおよびResources.Designer.vbを自分で修正すれば不可能ではありません。

    が、まああまり現実的とは言えないでしょう。

    あえてリソースにする理由は何でしょうか? プログラム内に直接配列を定義すべきではない理由がおありでしょうか?

    画像等のバイナリデータであるなら、何故配列で登録しなければならないのでしょうか?

    2017年4月13日 2:35
  • バイナリファイル をリソースに追加すれば、My.Ressources.リソース名 が『As Byte()』という配列を返すようになります。

    それ以外の型の配列が必要な場合は、自前で変換するなどして対処してみてください。

    たとえばテキストファイルや文字列がリソースに追加されている場合は、As String で得られますので、そこから Split メソッドを併用するなどすれば、String の配列に変換することができるでしょう。

    なお、My.Resources ではなく My.Settings の方であれば、Seetings.settings を[右クリック]→[ファイルを開くアプリケーションの選択]→[XML (テキスト) エディター]などから直接編集すれば、<Setting> タグに配列型(たとえば Type="System.String[]" など) を無理矢理に割り当てることはできます。あまり使い勝手が良いものでは無いですが。

    2017年4月13日 2:45
  • Dim a As String = My.Resources.Test0
    Dim b As String = My.Resources.Test1
    Dim c As String = My.Resources.Test2

    のような複数のリソースを、

    Dim a As String = My.Resources.Test(0)
    Dim b As String = My.Resources.Test(1)
    Dim c As String = My.Resources.Test(2)

    のように取得させることはできませんが、

    Dim a As String = My.Resources.ResourcesManager.GetString("Test"
     & CStr(0))
    Dim b As String = My.Resources.ResourcesManager.GetString("Test"
     & CStr(1))
    Dim c As String = My.Resources.ResourcesManager.GetString("Test"
     & CStr(2))
    のように記述することはできます。
    2017年4月13日 2:58
  • 有難うございます。

    リソース内に配列を持つのは現実的ではないという事ですね。

    リソースにしないといけない理由はありません。

    VB自体あまり詳しくないのでトンチンカンな事を言うかもしれませんが、
    グローバルな定数の保存場所として、リソースを使うのが便利かなと思ったのです。

    2017年4月13日 3:13
  • 有難うございます。

    裏技的に使うことも可能という事ですね。
    それが必要な時が来れば参考にさせて頂きたいと思います。
    2017年4月13日 3:14
  • custardpudding さま よろしく。

    グローバルな定数の保存場所として、リソースを使うのが便利かなと思ったのです。

    に関して。
    Class 直下に Const で定義すれば良いのではないでしょうか。
        つまり、Hongliang さまのご意見に賛成です。
    2017年4月13日 4:46