C# Foreach文を使用してのINIファイルの項目を取得

[戻る]
C#初心者 2008/04/15(火) 12:30:40
再びお世話になります。Visual Studio 2005 C#です。

現在、INIファイルの項目を取得してListViewへ表示させるものを作成しています。

----Test.iniの中身----

[test]
1=ああああ
2=いいいい
3=うううう
・
・
・
---------------------

StringBuilder Koumoku = new StringBuilder(1024);

string[] GetKoumoku = new string[20];

for(int Cnt = 1; Cnt < 20; Cnt++)
{
   string Key = Cnt.ToString();

   GetprivateProfileString("test",Key,"",Koumoku,(unit) 
   Koumoku.Capacity,"C:\test.ini);

   GetKoumoku[Cnt] = Koumoku.ToString();

}

としてFor文で20回回してIniファイルの情報を配列に格納しています。

やりたいことはIniファイルのキーが動的に増えていく(1,2,3,4,5・・・)
ので20回回すのではなくIniファイルのキー分ループさせて値を取得したい
と考えています。

Foreach文を上手く使用できれば出来ると思いましたが・・・。すみませんが
上記のFor文をForeach文に書き換えてIniファイルのキー分の中身を読むよう
なサンプルコードを記載して頂けないでしょうか。

Blue 2008/04/15(火) 12:51:39
>再びお世話になります。Visual Studio 2005 C#です。
いた違いでは?

C#の質問は
http://rararahp.cool.ne.jp/cgi-bin/lng/dotnet/dotnetlng.cgi
でどうぞ。

ちなみに GetPrivateProfileSection てな関数もあります。
VC++の類似過去ログ
http://rararahp.cool.ne.jp/cgi-bin/lng/vc/vclng.cgi?print+200607/06070063.txt

C#初心者 2008/04/15(火) 13:02:02
Blueさん

返信ありがとうございます。情報が不足しておりました・・。

View側はC#ですがDocumentはC++で作成しているのでこちらの
板で質問させて頂きました。

過去ログ等にも同じようなスマートに処理する質問が記載
されていましたが複雑そうに書いてありました。Foreachで
簡単に出来そうだと思いましたが甘くはないですね。

アキラ [HomePage] 2008/04/15(火) 13:27:53
無限ループして、GetprivateProfileStringが失敗するまで
キーをカウントアップしてみてはいかがでしょう
それかキー数のキーを用意するか

FUKU 2008/04/15(火) 15:55:55
GetPrivateProfileSectionをP/Invokeするのもありかもです

Wood 2008/04/16(水) 08:42:53
板違いと勘違いされないために一言、いわせてね

質問したいC++のバージョン情報は正確に示しましょう
C#2005から呼び出せるものは
C++2005だけではありません
・NETフレームワークを介して呼び出されるだろうから
そう言った実行環境も必要じゃないですかね

又、MFCを使っているのかAPIのみなのか

C++の質問なのだから
C#の〜と言う質問の仕方はルール違反と思いませんか?

Blue 2008/04/16(水) 09:14:10
>過去ログ等にも同じようなスマートに処理する質問が記載
>されていましたが複雑そうに書いてありました
やはりキーの数もとっておいたほうが簡単だと思うのですが。

そもそも、iniファイル自体、.NET Framework ではまったくライブラリがない(と思う)
ものなので、向いていないものなのではないかと思っています。
→foreachでできる構文はないのでは?
(これから作るものであえてiniファイルを使うべきではないような。)
参考)http://www.atmarkit.co.jp/fdotnet/dotnettips/039inifile/inifile.html


あえてforeachを使うとなると、GetPrivateProfileSectionでキーを配列に入れるぐらい
しか思いつかないです。
(結局逆に複雑になるため、foreachを使う利点などないかな。)

C#初心者 2008/04/17(木) 22:13:03
[[解決]]
皆様、いろいろなアドバイスありがとうございました。

いろいろ検討しましたがキーの数を先に取得してキーの数分
For文で回すようにしてなんとか出来ました。Foreachでは出
来なさそうですね(^^);

C++の掲示板ですので今後はC#の掲示板で質問させて頂きたい
と思います。

古いスレッドには追加発言できません。