INIファイルでセクション数を取得するには?

解決


サウザー  2006-02-09 00:23:52  No: 94072

INIファイルでセクションの数を求めたいのですが、いい方法が思いつきません。
"["と"]"に囲まれた文字という条件で一行ずつチェックすると、例えば
[AAA]  //セクション
[B=C]  //キーと値
というものがあるとそれもカウントしてしまいますし、
じゃ、"="が無いものという条件にすると、
[A=A]  //セクション
[B=C]  //キーと値
の場合カウントされません。
まぁ、そんなセクション名とキー名にするなという話になるんですが、
今後使いまわすときに、まったく無いとは言い切れませんし、
なにかよい方法ないでしょうか?


123  2006-02-09 00:43:50  No: 94073

キー名の最初に”[”の文字が使用されている時点で
それはもはやWindows初期設定ファイルではありませんので
自分で解決できる方法を考えるしかないでしょう。

というか解決できないと思いますよ。


みい  2006-02-09 01:12:32  No: 94074

少なくともキーと値の部分は"[B]=C"の記述になるよなぁと思いつつ、
VC6(おいこら)でPrivateProfileString使ってテスト。

書込は出来ました。
ただし、2回目以降の書込では上書きされずに新規追加されてしまいました
([B]=Cの行がどんどん増えていく)。
読込は失敗しました。


123  2006-02-09 01:34:39  No: 94075

[A=B]を無理やりキーと値と解釈するなら
”[A”がキー名で”B]”が値ということじゃない?

しかし

[A=A]
[A=B]
[A=C]

と書くと、それが許されるならどれがキーでどれがセクションかは書いた人のみぞ知る
ということでしょう。


通ってみた  2006-02-09 02:07:15  No: 94076

セクションの数を取得したいんですよね???
単純にGetPrivateProfileStringとか
GetPrivateProfileSectionNamesとかでセクション名をとって、
Split() & Ubound() では駄目ですか?
それともAPIなどは使いたくないってことなんでしょうか?
もしかして、場違いな書込みだったらゴメンナサイ・・・^^;


みい  2006-02-09 04:58:20  No: 94077

> [A=B]を無理やりキーと値と解釈するなら
> ”[A”がキー名で”B]”が値ということじゃない?
そーですね。
ということで、もう1回チャレンジ()。
当然結果は同じ、当たり前だっつーのよ(^x^)/
セクションとキーの区別が完全になくなった分、
ファイルを直に開いてみても区別つかないですもんね。

ちなみにセクション[A]に[B]=Cと[B=C]書き込んだ後に
通ってみたさんの指摘されてたGetPrivateProfileSectionNames
使ってチェックしてみたところ、A,B,B=Cの3つが
取得されました。
ってことは"["がある時点でセクションとして判断されるのでしょうね。


サウザー  2006-02-13 20:57:03  No: 94078

みなさんありがとうございます。
やはり[A=B]なんて書き方しませんよね。
キー名の最初に[なんて使わないようにすれば
いいのだと思います。
ありがとうございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加