月に一度の処理

[戻る]
AFO 2008/04/02(水) 18:23:22
漠然としたテーマの質問で恐縮なのですが
あるアプリケーションを、毎日(とは限らないが)起動しているとして
起動時に月が替わっていたらあるバックアップ処理を一度だけ実行したいのです。
もちろん、一度実行したら、その月の間はバックアップはしません。
ただ、バックアップするかどうか選択画面を呼んで、選択した時だけバックアップ
選択しなかったら、次回起動時にまた選択画面が出る、というふうにしたいのです。

この辺りの判断をする処理を上手に組み込むにはどうしたらいいか
よくやるやり方とかあれば教えていただきたいと思いまして質問しました。
ご経験のあるかた、よろしくお願いいたします。

Kerry 2008/04/02(水) 19:42:17
最後にバックアップを行った日付をレジストリかなにかに
記録すれば良いと思います。

起動時に、現在の年・月が前回バックアップしたときの
年・月と異なっている、または、前回バックアップの日付が
記録されていない場合は選択画面を出す。

バックアップが選択された場合は、バックアップ処理を行い、
現在の日付を記録する。
選択されなかった場合はなにもしない。

maru 2008/04/02(水) 19:45:56
アプリケーション固有の情報として「前回バックアップした月」を保存しておき、
アプリケーション起動時に「現在月」と「前回バックアップした月」が異なってい
たら、選択画面をだす。選択してバックアップを行なったら、「現在月」を「前回
バックアップした月」として保存する。
アプリケーション固有の情報として、レジストリやファイルを使う。

これくらいで出来そうだけど。
例えば、
void func(void)
{   int this_month = get_this_month();
    if (get_backup_month() != this_month)
    {   if (selection() == YES)
        {   backup();
            set_backup_month(this_month);
        }
    }
}
こんな関数を作成して、 get_this_month(), get_backup_month(), selection(),
 backup(), set_backup_month(int) を適切に作成する。

# どんな関数が適切なのかって?
# 環境が書いてあって、時間があれば考えてもいいけど。...

AFO 2008/04/02(水) 20:42:42
[[解決]]
kerryさん、maruさん、ありがとうございます。
そうですね、"前回バックアップした月"だけ覚えておけば
割とスマートにいけそうですね。
それでやってみます。
ありがとうございました。

たいちう 2008/04/03(木) 09:13:48
そんな想定は必要ないかもしれないけど、
1年ぶりに起動する場合にバックアップできなくなるので一応年も保存しておこう。
↓
年と月を覚えておくなら、いっそ日付や日時を覚えておくほうが、
応用も利くしスマートだと思うな。

ん? 2008/04/03(木) 09:30:35
Windowsのスケジューラーでいいんでは?

maru 2008/04/03(木) 12:54:25
> Windowsのスケジューラーでいいんでは?
御意。
よく考えたら、自分のPCでもバックアップをスケジューラで動かしていた。

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