• ベストアンサー

iniファイルで前に設定した値を利用したい

例えば、iniファイルの中で a = "2" という設定が最初にあったときに次の行のbは a = "2" b = a という風にaに設定した値2をbに代入したいのですが 上のような記述だとbの内容は文字列aになってしまいます・・・ このようなプログラムでいう変数の値を代入するみたいなことは iniファイルではできるのでしょうか?

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

  • ベストアンサー
回答No.3

「iniファイルの中の、変数の値」をどう取り扱うかは、アプリケーション任せです。 >上のような記述だとbの内容は文字列aになってしまいます・・・ 取り出した値が「a」だった場合、それを「文字列だ」と扱えば、文字列になってしまいます。 しかし、それを「変数名だ」と扱えば、それは「変数名」です。 文字列と思うか変数名だと思うかは、アプリケーションの自由です。 そして、それを変数名だと解釈し、iniファイルの中の「a="2"」の行から「2」を取り出し直すのも、アプリケーションの自由です。 「文字列と思うか、変数名と思うかは、アプリケーションの自由」なのですから「最初に取り出した『a』を、文字列だと思わず、変数名だと思えば良い」だけの話です。 ただし、単純に「文字列が書いてあったら、それは変数名だ」などと安直な処理をすると「iniファイルの変数に、文字列を設定できなくなってしまう」のでご注意を。 なので、例えば b=a ← この場合は、文字列「a」が設定されていると解釈する b=%a ← 先頭に%が1個あった時だけ、変数名「a」が設定されていると解釈する b=%%a ← 先頭の連続する2個の%は「文字の%が1個」と解釈し、文字列「%a」が設定されていると解釈する などのように「ちょっとした工夫」が必要でしょう。 もちろん、設定した値をiniファイルに書き出す際も「設定しようとした文字列の先頭に%があったら、先頭に%をもう1個足してから書き出す」などの処理が必要です。 「取り出した値をどう用いるかは、アプリケーションの自由であり、アプリケーションの責任である」と言う事を忘れないように。 「文字列が設定されていたから、それは文字列だ」と思考停止してしまうのは「無責任」ですから、アプリケーションがちゃんと責任を持って「しかるべき処理」をしてあげなければなりません。

takagoo100
質問者

お礼

ご回答ありがとうございます。 なるほど、たしかにそういう風にこちら側(プログラム側)で 解釈して読み取らないと駄目ですよね。 なんかiniファイルが勝手にやってくれるものだと勘違いしてました・・・

その他の回答 (3)

回答No.4

追記。 こういう事をする時は「循環参照」に気をつけること。 例えば a=%c b=%a c=%b などと書いてあると「ぐるぐる回って、永久に止まらなくなり、無限ループ」してしまいます。 なので「1回の値の評価の中で、1度参照した変数をもう一度参照したら、エラーで止まる」などの処理が必要です。 こういう「構文解析」や「変数参照」は、アルゴリズムがかなり複雑になり、これだけで本が1冊書けてしまいます。実装するなら「構文解析のアルゴリズム」について書かれた本を5~6冊くらい熟読してからにしましょう。じゃないと絶対に無理です。

  • DIooggooID
  • ベストアンサー率27% (1730/6405)
回答No.2

プログラム内で、  b = a  であれば、 a の値を b に代入する という処理を追加してください。

  • suzukikun
  • ベストアンサー率28% (372/1325)
回答No.1

自分でプログラムを書いているのでなければできません。