最初に起動してから1週間で動かなくしたいのですいがどのような方法がよいでしょうか?できるだけ簡単な方法がよいのですが、サンプルと共に宜しくお願いします。
・最初に起動した日時をレジストリかファイルに保存。
・プログラム起動時に、経過日時を調べ、指定の日時を過ぎていたら、プログラム終了
でどうですか?
方法:レジストリに保存する
・起動時にレジストリに実行日が記述されているか確認する
日付がある場合
・現在の実行日から一週間経過しているか確認し、経過している場合終了する
経過していないなら、そのまま起動する
日付がない場合
・日付を書き込んで、起動する
TRegistry クラスを使いましょう
終了
レジストリに書き込むのは良い方法とおもったのですが、インストール不要にしたいため、VISTAでは少し厄介になってしまうので。
隠しファイルか何かにしようかと思います、一週間経過したかどうかを確認する部分はどうすればよいでしょうか?
>一週間経過したかどうかを確認する部分はどうすればよいでしょうか?
最初に起動した日時と、プログラムを起動した日時
を比較するのはどうですか?
> レジストリに書き込むのは良い方法とおもったのですが、
> インストール不要にしたいため、VISTAでは少し厄介になってしまうので。
当方、VISTA(Business) + D2007 ですが、インストールしなくても
*.exe ファイルのコピーだけで特に問題なく動作していますよ。
>一週間経過したかどうかを確認する部分はどうすればよいでしょうか?
WithinPastDays 関数
WithinPastDays 関数は,2 つの日付が互いに指定された日数内にあるかどうかを示します。
IncDay 関数
IncDay 関数は,指定された日数で変更された日付を返します。
辺りを使用するとよいかも・・・。
DaysBetween 関数というのもあるみたいです。(Delphi7以降?)
DaysBetweenですかなるほど。
DaysBetween(FromDate, ToDate);
なんとなくはわかるのですが、月を跨ぐときどうするのでしょうか?
できれば、今日より一週間たったことがわかるようなサンプルいただけませんか?
>できれば、今日より一週間たったことがわかるようなサンプルいただけませんか?
キミはヘルプを見たことないの? 見ようとも思わないの?
ヘルプを見ればすぐに分かるようなこと、関数を二つほど使えば済むようなことにサンプルを欲しがるとは...
ちなみに、WithinPastDays関数は 日数の差を求めるのに DaysBetween関数を使ってることがヘルプを見れば分かるし、TDateTime型は月を跨ごうが年を跨ごうが関係ないよ。
>月を跨ぐときどうするのでしょうか?
月を跨いでも大丈夫だと思います。
>できれば、今日より一週間たったことがわかるようなサンプルいただけませんか?
まずは、ヒロポン さん自身で、
わかるところまで、プログラムを作成してみるのはいかがですか?
ちなみに、現在の日時などは、Now 関数(日付部分だけならDate 関数)でよいかと思います。
非常に素人でもうしわけございません。
var
day1, day2, day3: TDate;//日にち
begin
//日にち計算部分
day1 := StrToDate('2002/11/23');
day2 := StrToDate('2003/11/24');
day3 := day2 - day1;
ShowMessage(Format('%.1f', [day3]));
これで、日にちの計算はできたのですが、、、、
現在の日にち+7日ってのはどうしたらよいでしょうか?
>現在の日にち+7日ってのはどうしたらよいでしょうか?
Now 関数 か Date 関数 の戻り値 + 7
でどうでしょう?
Now や Date の値に+7したら 37日とかにならないですか?
>Now や Date の値に+7したら 37日とかにならないですか?
なりません。
できまひた。。。。
できまひた。。。。
ツイート | ![]() |