INIファイルでセクションの数を求めたいのですが、いい方法が思いつきません。
"["と"]"に囲まれた文字という条件で一行ずつチェックすると、例えば
[AAA] //セクション
[B=C] //キーと値
というものがあるとそれもカウントしてしまいますし、
じゃ、"="が無いものという条件にすると、
[A=A] //セクション
[B=C] //キーと値
の場合カウントされません。
まぁ、そんなセクション名とキー名にするなという話になるんですが、
今後使いまわすときに、まったく無いとは言い切れませんし、
なにかよい方法ないでしょうか?
キー名の最初に”[”の文字が使用されている時点で
それはもはやWindows初期設定ファイルではありませんので
自分で解決できる方法を考えるしかないでしょう。
というか解決できないと思いますよ。
少なくともキーと値の部分は"[B]=C"の記述になるよなぁと思いつつ、
VC6(おいこら)でPrivateProfileString使ってテスト。
書込は出来ました。
ただし、2回目以降の書込では上書きされずに新規追加されてしまいました
([B]=Cの行がどんどん増えていく)。
読込は失敗しました。
[A=B]を無理やりキーと値と解釈するなら
”[A”がキー名で”B]”が値ということじゃない?
しかし
[A=A]
[A=B]
[A=C]
と書くと、それが許されるならどれがキーでどれがセクションかは書いた人のみぞ知る
ということでしょう。
セクションの数を取得したいんですよね???
単純にGetPrivateProfileStringとか
GetPrivateProfileSectionNamesとかでセクション名をとって、
Split() & Ubound() では駄目ですか?
それともAPIなどは使いたくないってことなんでしょうか?
もしかして、場違いな書込みだったらゴメンナサイ・・・^^;
> [A=B]を無理やりキーと値と解釈するなら
> ”[A”がキー名で”B]”が値ということじゃない?
そーですね。
ということで、もう1回チャレンジ()。
当然結果は同じ、当たり前だっつーのよ(^x^)/
セクションとキーの区別が完全になくなった分、
ファイルを直に開いてみても区別つかないですもんね。
ちなみにセクション[A]に[B]=Cと[B=C]書き込んだ後に
通ってみたさんの指摘されてたGetPrivateProfileSectionNames
使ってチェックしてみたところ、A,B,B=Cの3つが
取得されました。
ってことは"["がある時点でセクションとして判断されるのでしょうね。
みなさんありがとうございます。
やはり[A=B]なんて書き方しませんよね。
キー名の最初に[なんて使わないようにすれば
いいのだと思います。
ありがとうございました。
ツイート | ![]() |