アプリ版:「スタンプのみでお礼する」機能のリリースについて

こんにちわdio-dioです。

今回もお助けください。

質問の内容ですが、
VC++のMFCを用いて2つのiniファイルのデータを比較し照合して
新規のファイルを作成するプログラムを組みたいと思っております。

プログラム実行例ですが、一例はこうです
<iniファイル(更新用)>
【テレビ】
朝=めざまし
昼=いいとも
夜=SMAP×SMAP

<iniファイル(マスタ用)>
【テレビ】
朝=朝ズバ!
昼=いいとも
夜=めちゃイケ
深夜=くりぃむナントカ
【芸人】
司会者=タモリ
【芸能人】
男性=オダギリジョー
女性=伊東美咲

<iniファイル(新規)>
【テレビ】
朝=めざまし
昼=いいとも
夜=SMAP×SMAP
深夜=くりぃむナントカ
【芸人】
司会者=タモリ
【芸能人】
男性=オダギリジョー
女性=伊東美咲

となります。
そのためにまずはフローチャートを作成することに成りました。

そのフローチャートの書き方がよく分かりません。
今までフローチャートは書いたことはありますが、
今回はiniファイル専用のAPI関数があったりと今まで私が
経験したものよりも複雑で混乱しています。

どなたか知恵をお貸しいただけないでしょうか?
シンプルに考えればいいとまわりからも言われているのですが、
性格上の問題でしょうか・・・うまくいきません。

簡単なことだよ!と対応できる方よろしくお願いいたします。

A 回答 (4件)

処理の流れを考えればいいと思います。


今ある情報から考えると私ならこんなかんじでしょうか。

・マスタをコピーして新規のファイル名にする
→更新用のセクション名の一覧を取得する
→セクションごとにキー名の一覧を取得する
→キーごとに値を取得し、新規ファイルに書き込む
(キー・セクションごとに繰り返し)

セクションやキーの一覧の取得はGetPrivateProfileStringの第1や第2の引数をNULLにすることで取得できます。
一覧を取得したあとの処理がめんどくさそうですが、これが出来ればほぼ完成でしょう。
    • good
    • 0

★フローチャートの書き方よりもアルゴリズムですよね。

分からないのは。
>今までフローチャートは書いたことはありますが…
・という事は実装したときのコードをフローチャート風に変換すればいいだけですよ。
 シンプルに考えればいいとは、iniファイル専用の API 関数を使うことを想定しないで
 考えればよいという事です。
・私ならば マスタ用 ini ファイルをすべてセクション単位で読み込みます。
 セクションとは【テレビ】【芸人】【芸能人】をブロック単位で考えます。
 決して行単位ではありません。セクションというブロック単位です。
 そうするとメモリ上に【テレビ】【芸人】【芸能人】という3つのセクション単位で
 読み込んだデータがある事になります。→メモリ上ではセクション単位で管理するわけ。
・次に更新用 ini ファイルも同様にすべてセクション単位で読み込みます。
 このとき、読み込むセクションが既に読み込んだセクション内にあるか調査します。
 今回は【テレビ】セクションが既に読み込んだセクション内にあるため、既に読み込んだ
 【テレビ】セクションを削除して、新しく読み込む【テレビ】セクションと置き換えます。
 更新用 ini ファイルに複数のセクションがある場合も同様に繰り返せばよい。
・また、マスタ用、更新用 ini ファイルをセクション単位で読み込んだ後はすべての
 セクションを新規 ini ファイルに書き出せば処理は終了となります。
 これをフローチャートに記述すればよい。
・シンプルに考えればよいとは、上記のような単純な考えで良いという事でしょうね。
・以上。参考に!
    • good
    • 0

>>シンプルに考えればいいとまわりからも言われているのですが、


性格上の問題でしょうか・・・うまくいきません。

プログラムの世界に限りませんが、自分の頭で考えても、該当分野の素材(知識)が乏しいと、何も出てこないってことは多いと思います。実際、私も入社当時に、フローチャートの書き方やS/360のハードやOSの話を研修で学んでも、課題のCOBOLのプログラムの完成までには、長い時間が必要でしたし、できあがったプログラムは長くてわかりにくいものでした。
でも、しばらくして「構造化プログラミング」「複合設計」等の手法を書籍で知ってから、プログラムロジックの作成がスムーズにできるようになりました。

たぶん、質問の例は、STLコンテナのmapを使えば楽にできると思います。でも、もしかすると、質問者さんの場合、CとC++の書籍を数冊読んである程度の知識を補給しておかないと無理な気もします。

P.S.
会社では、プログラムの要求仕様書やテストケースなどをきっちりと作成できる方がいます。ある程度のソースも作れます。でも、ちょっと複雑な処理になると、仕様は書けても、コードに落とすことができないのです。「ここまで仕様書が書けるのだから、できるだろう?」と思ったことはありますが、半年かけてもできず、私が助っ人したことがあります。やはりなんらかの知識が彼に欠乏していたのだと思っています。
    • good
    • 0

MFCを使う必要がわからないけど、API関数(GetPrivateProfileXXXX/WritePrivateProfileXXXのことか?)は気にしなくていいでしょう。



フローチャートの構成要素としては「iniファイルを読み込む」とか「すべてのkeyについてループする」とか「keyが一致したらどうするか?」が必要なだけで、その実装部分(どうやって ini ファイルを読むか、とかすべてのkeyをどうやってループするか)は不要です。

コーディングする時点で Win32API じゃなくて別のライブラリを使ってファイルを読み書きするよう変更されるかもしれないしね。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!