• ベストアンサー

C#で文字列リソースを扱う

引数でファイル名を絶対パスで読みこんで処理をする、というコンソールアプリを作成しています。 エラーメッセージなどをリソースで管理しているのですが、内容を動的に変更したいとき、どうすればよいのかわからず、困っています。 (たとえば、こういう感じです。) リソース登録された文字列 "指定されたファイル'{1}'はありません。"           ↑  ここに引数で受け取ったファイル名を入れたい。 このようなリソースの作成方法や、呼び出し方法を、どなたかご教授ください。

  • SSMSE
  • お礼率25% (17/67)

質問者が選んだベストアンサー

  • ベストアンサー
  • UKY
  • ベストアンサー率50% (604/1207)
回答No.1

たとえば、 string name = "C:\foo.bar"; string s = string.Format("指定されたファイル'{1}'はありません。", name); とやると、s に "指定されたファイル'C:\foo.bar'はありません。" という文字列が得られます。

その他の回答 (2)

  • UKY
  • ベストアンサー率50% (604/1207)
回答No.3

失礼しました。BLUEPIXY さんの言うとおり、'{1}' ではなくて '{0}' です。 (コピー & ペーストしたとき気付きませんでした……)

  • BLUEPIXY
  • ベストアンサー率50% (3003/5914)
回答No.2

>エラーメッセージなどをリソースで管理している 既に管理されているなら >リソースの作成方法や、呼び出し方法 は、わかっているのでは? >"指定されたファイル'{1}'はありません。" >          ↑ >ここに引数で受け取ったファイル名を入れたい。 は、#1で言われているように (そういう形式の文字列が取り出せているなら) String.Format を使うといいと思います。 {0} かな?って思いますけど。 こうした単純なメッセージなんかのリソース作成は、 resgen ツールを使うとtxt からresX ファイルが簡単に作成できます。 (もちろん、リソースを扱うクラスからでも作成できますが) 呼び出しは、ResouceManager クラスを使うのが簡単です。

関連するQ&A

  • C#のコンソールアプリ

    起動時に引数としてファイルの絶対パスを与え、そのファイルの内容を表示させる、というコンソールアプリを作成しようとしています。 このとき、引数にはエスケープ文字が入ることが予想されますが、そのまま処理に使用できるのでしょうか?

  • 文字列取得

    '/path1/path2/file1.txt' '/path1/path2/path3/file2.txt' 上記のようなpathがあった場合にファイル名(拡張子なし)の 文字列を取得したいのですがどのように良いでしょうか? 宜しくお願い致します。 awkで$4と指定すれば「file1.txt」の文字列を取得できるのですが パスの長さが定まっていないため$4ではなく最後の文字と指定する 記号はないでしょうか? echo /path1/path2/file1.txt |awk '{FS="/"; print $4}'

  • C#のAxWindowsMediaPlayerからリソースに埋め込まれ

    C#のAxWindowsMediaPlayerからリソースに埋め込まれた動画を読み込みたい 簡易動画プレイヤーと動画ファイルを1つの .exe ファイルにしたいと思っています。 C#から COMコンポーネント AxWindowsMediaPlayer を使用し、リソースに 動画ファイルを埋め込みたいのですが、埋め込んだリソース(byte[]?)を AxWindowsMediaPlayer へ渡す方法がわかりません。 AxWindowsMediaPlayer.URL にはファイル名等しか指定できないため、 最悪、いったんファイルに書き出すしかないかなと思っていますが、 動画本体は大きいファイルなので出来れば避けたく思います。 他によい方法はありませんでしょうか? DLLはILMergeで .exe に同梱できることを確認しました。 VS2010, WindowsXP です。

  • 【.NET】文字列の管理方法、メッセージボックスボタン名の編集について

    VC++2005の.NETでアプリを作成しております。言語はC++/CLIです。 いきなり複数の質問で申し訳ありませんが、二点質問があります。 (1) .NETでの文字列管理はどのように管理するのが理想的なのでしょうか? 例えば、MFCであればリソースビューのストリングテーブルで管理する方法がありましたが、 .NETではそれが見当たらなく、コード中に直接書くのも悪いような気がするので質問させて頂きました。 (2) メッセージボックスのボタン名を任意の文字列に変更するにはどうすれば良いのでしょうか? 例えば、下記コードで出現するメッセージボックスの、「OK」と「キャンセル」を、 文字列「aaa」「bbb」に変更する方法について、ご教示お願い致します。

  • 【VBA】IDを入力して文字列を取り出す関数

    ExcelのVBAにてプログラムを作成しています。 IDを引数に渡して、文字列を取り出すような関数を作成しようと思っていますが、 何か良い作成例をご教示頂けないでしょうか? 例としては、このような形を考えています。 ※リソースファイルなどを使用せず、全てコードにて記述。 GetString("TEST_ID") '引数のIDに対応する文字列を返す(ID、文字列はテーブルなどで定義) お手数ですが、よろしくお願いします。

  • 【C++/CLI】文字列管理関数の作成

    VC++2005の.NET、言語はC++/CLIでアプリを作成しています。 String型の文字列を管理するクラスを作成しようと思います。 自分ではどのようなものを作成したいのか、イメージはついているのですが、 CLIの知識、技術が足りず、なかなか作成することが難しい状態です。 下記にイメージを記載しますので、有識者の方々アドバイス頂けませんでしょうか。 よろしくお願い致します。 文字列管理クラス「TextTbl」 【TextTbl.h】 enum { STR_TEST1, //格納したい文字列1のID STR_TEST2 //格納したい文字列2のID // ・・・   //ここに追加したい文字列のIDを追加していく } String^ getText( int id ); 【TextTbl.cpp】 // 文字列を取得する関数(引数は文字列のID) String^ TextTbl::getText( int id ) { //文字列のテーブルを定義する処理(文字列IDと文字列の文言が対になって定義されている) //IDを元に文字列を検索し取得する処理 return str; //検索した結果のString型文字列を返す }

  • 「,」区切りのcsvファイルを検索して文字列抽出したい

    環境:windows2000 csvファイル形式: pat,\path1\path2,\path\path3 pat_a,\path4\path5,\path7\path8 pat_a,\path7\path6,\path8\path9 バッチファイルに引数%A%を渡してcsvファイルを検索します。 検索文字列は引数%A%です。一行目に検索しようとする文字列があると それを%%Jにset してあげます。最後に渡された引数とセットされた文字列が同じであればOKです。 自分で考えたのですがなかなかうまくいきません。 みなさまのご教授おねがいします。 FOR /F "tokens=1 delims=," %%l in ('findstr /R "%1" rrr.csv') do set palam=%%l echo "渡された引数 [%1] " echo "セットされた文字列 [%palam%] " if "%palam%" NEQ "%1" ( goto :erro_end ) 引数は「pat」を渡したのですがセットされた文字列が「pat_a」 になってしまうんです。

  • C言語でUnicodeの文字列を扱う正しい方法が知りたいです。

    C言語でUnicodeの文字列を扱う正しい方法が知りたいです。 例えば、変数の中に格納された文字列が「a=3」かつ、文字列が「test」であれば処理を実行するといったプログラムの場合、 int a; a = 3; TCHAR file1[128]; file1 = TEXT"test"; if(a = 3 && file1 = TEXT"test"){//実行する処理}; のような形を考えましたが、エラーは出ないものの処理が実行されずに素通りしてしまいます。。 環境はVisual C++ 2008 Expressで、種類はコンソールプログラムではなく、GUIを持ったWindowsプログラムです。 どこを間違えているのでしょうか?

  • jarファイルを実行する際、出来るだけ多くのコマンドライン引数を渡すには?

    ファイルのパスをコマンドライン引数(mainメソッドの(String[] args)です。)で受け取って、そのファイルに処理を行うというプログラムを作成しました。 私は、30から40程度のファイルに対して処理を行いたいのですが、ここで問題が発生しました。 Jarファイルを起動する方法として、batファイルを作成し、batファイルに与えられた引数(ファイルのパスです)をそのままJarファイルの起動に渡しているのです。 ファイルが2つや3つなら正常に動作します。 しかし20や30となると、引数の文字列に制限があるようで、エラーが発生してしまいます。 どうにかして、Jarファイルに沢山の引数を与える方法は無いものでしょうか?

  • ファイル名を指定して、batファイルを実行したい。

    C♯、PostgresSQL環境です。 フォームのボタンを押した時、batファイルを実行したいと 考えています。 処理の内容は、DBのバックアップ・リストアです。 現在は、Process.Startを使ってバックアップ用のbatファイルを 実行していますが(処理としてはpg_dumpallをしています)、 リストア時はファイル名を指定してリストアさせたいのです。 (ファイル名を指定してリストア用batファイルを動かしたい) Process.Startの第二引数でファイル名を渡せば良いかと思ったの ですが、バッチファイルでそれを受け取って処理に入れるには どうすれば良いのでしょうか? (バッチファイルはコンソールアプリとして作ったわけではなく、 メモ帳で作成したものです) ヒントをいただけると助かります。 宜しくお願いします。

専門家に質問してみよう