再びお世話になります。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ファイルのキー分の中身を読むよう
なサンプルコードを記載して頂けないでしょうか。
>再びお世話になります。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
Blueさん
返信ありがとうございます。情報が不足しておりました・・。
View側はC#ですがDocumentはC++で作成しているのでこちらの
板で質問させて頂きました。
過去ログ等にも同じようなスマートに処理する質問が記載
されていましたが複雑そうに書いてありました。Foreachで
簡単に出来そうだと思いましたが甘くはないですね。
無限ループして、GetprivateProfileStringが失敗するまで
キーをカウントアップしてみてはいかがでしょう
それかキー数のキーを用意するか
GetPrivateProfileSectionをP/Invokeするのもありかもです
板違いと勘違いされないために一言、いわせてね
質問したいC++のバージョン情報は正確に示しましょう
C#2005から呼び出せるものは
C++2005だけではありません
・NETフレームワークを介して呼び出されるだろうから
そう言った実行環境も必要じゃないですかね
又、MFCを使っているのかAPIのみなのか
C++の質問なのだから
C#の~と言う質問の仕方はルール違反と思いませんか?
>過去ログ等にも同じようなスマートに処理する質問が記載
>されていましたが複雑そうに書いてありました
やはりキーの数もとっておいたほうが簡単だと思うのですが。
そもそも、iniファイル自体、.NET Framework ではまったくライブラリがない(と思う)
ものなので、向いていないものなのではないかと思っています。
→foreachでできる構文はないのでは?
(これから作るものであえてiniファイルを使うべきではないような。)
参考) http://www.atmarkit.co.jp/fdotnet/dotnettips/039inifile/inifile.html
あえてforeachを使うとなると、GetPrivateProfileSectionでキーを配列に入れるぐらい
しか思いつかないです。
(結局逆に複雑になるため、foreachを使う利点などないかな。)
皆様、いろいろなアドバイスありがとうございました。
いろいろ検討しましたがキーの数を先に取得してキーの数分
For文で回すようにしてなんとか出来ました。Foreachでは出
来なさそうですね(^^);
C++の掲示板ですので今後はC#の掲示板で質問させて頂きたい
と思います。