2007/8/11(Sat) 23:11:02|NO.10317
> Noahさん
まずは人の話を聞く姿勢を作りましょう。掲示板で感情的になって得することはまずありません。もっとも、これは回答側にも言えることですが……。
fさんのような意見を持つ方もいらっしゃいます。Noahさんのような考えで書き込む方もいらっしゃいます。ここはそうした人々が集まる場所です。様々な方々と正しくお付き合いするためにも、敬意を伴った書き込みは大切です。
敬意と言えば前々スレでのNoahさんは回答への謝礼を「あり」だけで済ませていましたが、そういうことは自粛するべきだと思いますよ。
さて、基本的に「自動的にバックアップを取ってくれる」なんて命令はありません。
「自動的に動いているように見えるけど、実はある手順(プログラム)に従って動いている」のがコンピュータです。
プログラム記述者は「機能の実現のためにどんな命令・処理方法を組み合わせて、プログラムするか(コンピュータへ指令を出すか)」を考える必要があります。
この点を理解しなければ、検索もうまくできません。
……前置きが長くなってしまいました。
書き込みへの回答として、「私ならばこう作るかな」という「考えの流れ」を下に載せておきます。
1.今回の機能は「テキストデータに変更が加わったとき」に発動させる必要があります。ですので、テキストデータに変更が加わったかどうかを調べる手段を考えます。最も単純なのはあらかじめ変数にテキストを格納しておいて、この変数と編集中のテキストが等しいかどうかループでチェックする方法です。あるいはハッシュ関数などを利用することも考えられます。
2.「テキストが変更されるたびにバックアップしたんじゃ処理が重すぎる!」ということも考えられますので、3〜5分程度に1回だけバックアップする、といった処理も入れたいところです。これはgettime関数を利用することで実装できます。
3.問題のバックアップですが、これは単純にbsave/notesaveで実装できます。バックアップファイルの保存場所は色々と考えられますので、Noahさんの好きなようにどうぞ。ファイル名は拡張子をbakに変えたものが良く利用されていると思いますが、これはgetpath関数で容易に得ることができます。
4.あとはこれらの処理をつなげるだけです。1と2で決定した実行タイミングに従ってサブルーチンを呼び出し、バックアップを取るようにすれば後々変更もしやすいでしょう。
以上です。よりスマートな方法もありますが、標準命令だけでも作成は可能です。
「ハッシュ関数」「拡張子」などが分からない場合は、検索で調べてみてくださいね。
| |