No.5ベストアンサー
- 回答日時:
★キーの『値』だけを取得して配列に取得したいのですね。
・szBuff バッファ領域の文字列から=文字を検索して配列に格納すればよい。
ちなみに配列には文字列でセットしますか?
それとも整数値に変換した値をセットしますか?
どっち。
・とりあえず、下にサンプルを載せておくので使い分けて下さい。
サンプル:
TCHAR szBuff[ 32768 ];
LPTSTR lpSeek;
LPTSTR lpFind;
LPTSTR *s[ 100 ]; ←文字列として格納
INT n[ 100 ]; ←整数として格納
INT i = 0; ←カウンタ
GetPrivateProfileSection( TEXT("セクション名"), szBuff, sizeof(szBuff), TEXT("INIファイル名") );
for ( lpSeek = szBuff ; *lpSeek != '\0' ; lpSeek++ ){
if ( (lpFind = strchr(lpSeek,'=')) != NULL ){ ←=文字を検索
s[ i ] = lpFind + 1;
n[ i ] = atol( lpFind + 1 );
i++;
}
while ( *lpSeek != '\0' ){ ←次のキーデータに移動するための処理
lpSeek++;
}
}
printf( "max=%d\n", i ); ←i カウンタがそのままキーデータの個数になる。
解説:
・前回のサンプルに文字列や整数値を配列にセットする部分を追加しただけ。
lpSeek に1つ1つのキーデータの文字列になるので、=文字を strchr 関数で
検索して=文字の次の1文字目がデータ(値)になります。
・あとは文字列の配列(s)や、整数の配列(n)にセットしているだけです。
配列の要素数は 100 個にしています。セクション内にいくつのキーデータがあるか
不明ですので多めに宣言しておくか、最初に個数をカウントしてから malloc 関数で
確保してからセットして下さい。
最後に:
・ここは 2チャンネルのような掲示板ではありませんよ。
質問、補足、お礼などの文章をもう少し『品』がある文章にすると読みやすくなります。
ここの辺も気をつけて下さい。
・以上。今後の参考に!
回答ありがとうございます。
書き方注意させてしまってすいません。
なんだか少しでも楽しくと考えて今回はOKWaveに挑んでみました。
いるでしょ?回答がすっごく嫌味を含んでる人とか。
「こんなこともわからないんですか?」とか
「意味ないこと書かないでください」なんてこと。
ああいうの見てると、胸がムカムカしてきて
どこに怒ればいいのか矛先を見失い、
イカレ踊り狂うことになっちゃうんですよ。
そんなの嫌だから、楽しくやろう!って決めたんです。
いろんな人たちが集まる場だから礼儀を守ってって
よく分かるんですけど、それ無視してる奴は
ほっとけばいいじゃんって暗黙のルールみたいに
今の現状ではそうなっちゃってる。
そっちの方が絶対おかしい!って憤慨ですよ。まったく。
レフリー制度だけじゃ甘いですよ。
ってここで怒ってもしょうがないですから、
それ専用の掲示板作ってください。
俺みたいな無能には100年かかっても無理ですから。
人助けを心からしてくださる人たちにはとても感謝してます。
今回の質問は一度打ち切ろうとおもいます。
分からないことまだあるけど、長くなると迷惑ですからね。
それじゃまた。
すぐ会うことになると思いますけど(笑)その日まで。
No.6
- 回答日時:
★お礼への補足
>今回の質問は一度打ち切ろうとおもいます。
>分からないことまだあるけど、長くなると迷惑ですからね。
打ち切る必要はないですよ。
長くなっても一通りの解決するまではアドバイスなどを、できるかぎりしますが…。
・ただ、質問文の
>分かっちゃった!って人、おもいっきり教えてください。
>もんどりもっさりに教えてください。
↑の2行が気になったのです。
・確かにいろいろな人がいますがね。
本題:
・さてと本題のキーから値の取得方法は分かりましたか。重要なのはここですね。
サンプルをそのまま使っても、こそこそ使えますがエラーチェックや、データ数が
100 以上の場合は想定していませんので、適当に改良を付け加えて下さい。
・分からないことがあれば、またどうぞ。
・以上。
No.4
- 回答日時:
★アドバイス
・matsuhira さんは MSDN マニュアルを先に見てから質問をしてみたらどうですか。
前回の質問で GetPrivateProfileSectionNames() 関数を紹介したとき、MSDN のサイト
ですので、そこの検索システムを使えば見つかりますよ。
下の『参考URL』に MSDN のレジストリ関連を貼っておきます。ここを探せば INI ファイルの
キーと値を取得する API 関数が見つかります。そして、1度でよいので読んで下さい。
その上で使い方が分からない場合に質問を。
●本題
・キーと値を配列に格納したいようですが、どんな形式で格納したいのですか?
LPTSTR lpKeyData[ 10 ]; ←文字列ポインタへの配列(10個)
lpKeyData[ 0 ] ⇒ keyname1=string1
lpKeyData[ 1 ] ⇒ keyname2=string2
lpKeyData[ 2 ] ⇒ keyname3=string3
:
lpKeyData[ 9 ] ⇒ keyname9=string9
という形式ですか。
この場合は回答者 No.1、No.2 さんの方法で取得できます。
・あとすべてのキーと値を一度に取得する方法は回答者 No.3 さんが既に紹介されている方法で
取得できます。取得したバッファ領域の形式は、前回紹介した GetPrivateProfileSectionNames()
関数と同じです。つまり、複数の文字列を NULL 文字で区切り、最後に全体の最後を表す NULL
文字が1つ付けられます。
サンプル:
TCHAR szBuff[ 32768 ]; ←適当にサイズを決めておく
LPTSTR lpSeek;
GetPrivateProfileSection( TEXT("セクション名"), szBuff, sizeof(szBuff), TEXT("INIファイル名") );
for ( lpSeek = szBuff ; *lpSeek != '\0' ; lpSeek++ ){
printf( "%s\n", *lpSeek ); ←lpSeek が『キー』と『値』の文字列です。
while ( *lpSeek != '\0' ){ ←次のキーデータに移動するための処理
lpSeek++;
}
}
その他:
・上記のサンプルをコンソール・アプリケーションで作成すると、指定のセクション名のキーと値を
画面に出力します。それも順番に出力していきます。
サンプルのように GetPrivateProfileSection() API を利用すると1つずつを配列にセットしなくても
よくなります。一度に取得して lpSeek などで位置を移動すれば、すべてのキーを列挙できます。
・1つ1つの操作を行いたい場合は、GetPrivateProfileInt()、GetPrivateProfileString() の関数で
行う方が簡単です。特に整数値として値を取得したい場合は GetPrivateProfileInt() API 関数に
任せた方が楽です。それからエラーチェックはご自分でつけて下さい。
・以上。参考に。
参考URL:http://msdn.microsoft.com/library/ja/default.asp …
この回答への補足
回答ありがとうございます。
前回もお世話になってすいません。
MSDN見ました。理解できる部分10%ぐらいです。(はぁ~)
使い方はわかりましたけど、どうプログラムに生かすか・・・
そこですねぇ~。
サンプル見た感じですと、セクション内にあるキーと値をszBuffに
格納するということですね。
私のやりたいことは、ずばりその先にある!!!
取ってきたキーと値をは=でつながれているはずですから、
それをとっぱらってキーと値をそれぞれの配列に格納したいんですよ。
これが実際にやりたいことなんです!!!
伝わりますか?説明苦手でどうも・・・こう・・・。
何か分からないことあったらどんどん質問お願いします。
もっさりお願いします。。。
No.3
- 回答日時:
GetPrivateProfileSection を使えば
.ini ファイル(初期化ファイル)の、指定されたセクション内のすべてのキーと値を取得できます。
MSDNによると
関数から制御が返ると、このバッファに、指定したセクション内に存在するすべてのキー名と値のペアが格納されます。
キー名と値の間に等号(=)が挿入されます。各ペアの後に NULL が追加されます。
その結果、このバッファには、NULL で終わる文字列が 1 つまたは複数格納されます。
バッファの最後には、もう 1 つの NULL が追加されます。
なので、等号(=)とNULLによってバッファ内の文字列を分離しながら配列に入れていけば良さそうです。
No.2
- 回答日時:
>あの・・・配列に格納するやり方は知らないかなぁ?
数値なら
int hairetu[10];
hairetu[0] = GetPrivateProfileString(...);//キーワード1の分
hairetu[1] = GetPrivateProfileString(...);//キーワード2の分
hairetu[2] = GetPrivateProfileString(...);//キーワード3の分
では、ダメですか?
No.1
- 回答日時:
文字でとるなら、GetPrivateProfileString
数値でとるなら、GetPrivateProfileIntを
使用して下さい。
参考URL:http://msdn.microsoft.com/library/ja/default.asp …
この回答への補足
さっそくの回答、ありがとう!
そうだ!そうだ!って思い出したんだ、さっき。
あの・・・配列に格納するやり方は知らないかなぁ?
もし知ってたらお願いできないかぁ?
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
あなたの「必」の書き順を教えてください
ふだん、どういう書き順で「必」を書いていますか? みなさんの色んな書き順を知りたいです。 画像のA~Eを使って教えてください。
-
大人になっても苦手な食べ物、ありますか?
大人になっても、我慢してもどうしても食べれないほど苦手なものってありますよね。 あなたにとっての今でもどうしても苦手なものはなんですか?
-
CDの保有枚数を教えてください
ひとむかし前はCDを買ったり借りたりが主流でしたが、サブスクで簡単に音楽が聴ける今、CDを手に取ることも減ってきたかと思います。皆さんは2024年現在、何枚くらいCDをお持ちですか?
-
この人頭いいなと思ったエピソード
一緒にいたときに「この人頭いいな」と思ったエピソードを教えてください
-
ギリギリ行けるお一人様のライン
おひとり様需要が増えているというニュースも耳にしますが、 あなたが「ギリギリ一人でも行ける!」という場所や行為を教えてください
-
GetPrivateProfileStringでiniファイル読込む処理を詳しく知りたいのですが・・・
C言語・C++・C#
-
VB2008 iniファイルの指定セクション内の値のみを取得
Visual Basic(VBA)
-
INIファイルからのデータ読込みについて
C言語・C++・C#
-
-
4
iniファイルに追記がしたいです。
Visual Basic(VBA)
-
5
iniファイルのセクションについて
C言語・C++・C#
-
6
DWORDの実際の型は何でしょうか
C言語・C++・C#
-
7
ファイル書込みで一行もしくは部分的に上書きする
PHP
-
8
FriendとPublicの違い。。。
Visual Basic(VBA)
-
9
C言語のコンパイルエラーなんですが、どこが悪いのかがわからない。
C言語・C++・C#
-
10
iniファイル
その他(プログラミング・Web制作)
-
11
System.IO.Directory.GetFilesの順番
Visual Basic(VBA)
-
12
コマンドプロンプトによるフォルダ内のファイル存在有無
UNIX・Linux
-
13
VB2008 iniファイルの全セクション取得方法
Visual Basic(VBA)
-
14
CloseとDisposeの違い
Visual Basic(VBA)
-
15
VBの「As String * 128」とは?
Visual Basic(VBA)
-
16
iniファイルを読み込む方法
Visual Basic(VBA)
-
17
バッファとは何ですか
C言語・C++・C#
-
18
C# シリアル通信でデータ受信時の欠損について
C言語・C++・C#
-
19
visual studio でインデントを自動的に揃えるショートカットキー
その他(プログラミング・Web制作)
-
20
VB.NETで DataRow()を利用して、値からコードを取得したい。
Visual Basic(VBA)
関連するカテゴリからQ&Aを探す
おすすめ情報
- ・漫画をレンタルでお得に読める!
- ・一回も披露したことのない豆知識
- ・これ何て呼びますか
- ・チョコミントアイス
- ・初めて自分の家と他人の家が違う、と意識した時
- ・「これはヤバかったな」という遅刻エピソード
- ・これ何て呼びますか Part2
- ・許せない心理テスト
- ・この人頭いいなと思ったエピソード
- ・牛、豚、鶏、どれか一つ食べられなくなるとしたら?
- ・あなたの習慣について教えてください!!
- ・ハマっている「お菓子」を教えて!
- ・高校三年生の合唱祭で何を歌いましたか?
- ・【大喜利】【投稿~11/1】 存在しそうで存在しないモノマネ芸人の名前を教えてください
- ・好きなおでんの具材ドラフト会議しましょう
- ・餃子を食べるとき、何をつけますか?
- ・あなたの「必」の書き順を教えてください
- ・ギリギリ行けるお一人様のライン
- ・10代と話して驚いたこと
- ・家の中でのこだわりスペースはどこですか?
- ・つい集めてしまうものはなんですか?
- ・自分のセンスや笑いの好みに影響を受けた作品を教えて
- ・【お題】引っかけ問題(締め切り10月27日(日)23時)
- ・大人になっても苦手な食べ物、ありますか?
- ・14歳の自分に衝撃の事実を告げてください
- ・架空の映画のネタバレレビュー
- ・「お昼の放送」の思い出
- ・昨日見た夢を教えて下さい
- ・ちょっと先の未来クイズ第4問
- ・【大喜利】【投稿~10/21(月)】買ったばかりの自転車を分解してひと言
- ・メモのコツを教えてください!
- ・CDの保有枚数を教えてください
- ・ホテルを選ぶとき、これだけは譲れない条件TOP3は?
- ・家・車以外で、人生で一番奮発した買い物
- ・人生最悪の忘れ物
- ・【コナン30周年】嘘でしょ!?と思った○○周年を教えて【ハルヒ20周年】
- ・10秒目をつむったら…
- ・人生のプチ美学を教えてください!!
- ・あなたの習慣について教えてください!!
- ・都道府県穴埋めゲーム
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
iniファイルのキーと値を取得す...
-
ExcelのINDEXとMATCH関数でスピ...
-
[エクセル]連続する指定範囲か...
-
読み込みで一行おきに配列に格納
-
配列がとびとびである場合の書き方
-
エクセルで、絶対値の平均を算...
-
最小値を求める方法
-
For Nextマクロの高速化につい...
-
ヤフーファイナンス 株価時系...
-
【VBA】ユーザーフォーム リス...
-
.NET - 配列変数を省略可能の引...
-
SUMPRODUCT関数を用いた最小値
-
array関数で格納した配列の型を...
-
Excelのセルの色指定をVBAから...
-
配列に画像を格納
-
ExcelVBAの配列変数で一括でセ...
-
VBA-読み込んだテキストフ...
-
C#でFontStyleの列挙体に値を追...
-
VBA Dictionaryオブジェクトの...
-
Access2010で二次元配列をプル...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
Excelのセルの色指定をVBAから...
-
ExcelのINDEXとMATCH関数でスピ...
-
エクセルで、絶対値の平均を算...
-
[エクセル]連続する指定範囲か...
-
array関数で格納した配列の型を...
-
読み込みで一行おきに配列に格納
-
表にフィルターをかけ、絞った...
-
配列がとびとびである場合の書き方
-
VBA 配列に格納した値の平均の...
-
DataSetから、DataTableを取得...
-
【VBA】ユーザーフォーム リス...
-
iniファイルのキーと値を取得す...
-
.NET - 配列変数を省略可能の引...
-
Split関数でLong配列に格納する...
-
Datatableへの代入
-
Excel オートフィルタのリスト...
-
SUMPRODUCT関数を用いた最小値
-
エクセル 条件を指定した標準...
-
EXCEL VBA 2次元配列に格納さ...
-
[VBA]改行入りのセルの値を配列...
おすすめ情報