日付かどうか調べるには。

解決


マキ  2002-12-13 01:49:01  No: 2321

お久しぶりでございます。
いつも、勉強させていただいています。

早速ですが、VBで言うところの
IsDate関数みたいな関数はあるのでしょうか?

ヘルプ等は見たんですけど、探せませんでした。

もしよろしかったら、ご教授ください。
宜しくお願いいたします。


にしの  2002-12-13 02:32:34  No: 2322

StrToDateを使って文字列を日付に変換させると、正しい日付でなければ例外が発生します。
これを利用して、
try
  dt1 := StrToDate(str1);
except
  { 日付でない }
end;
とすれば出来ます。


マキ  2002-12-13 02:43:40  No: 2323

にしのさん。いつもいつもありがとうございます。

Str1が日付型で無いとエラーがでてしまいます。

Delphi の例外で停止のチェックをはずせばうまくいくんですが、
Delphi の例外で停止は、はずしても問題ないのでしょうか?

それと、Paradoxのテーブルの日付型のフィールドにNullを入力することはできるのでしょうか?
(Nullじゃなくても、値がクリアできればいいです。)

どうか宜しくお願いいたします。


にしの  2002-12-13 02:54:35  No: 2324

例外で停止するのはデバッガだからです。
デバッガのオプションで、例外で停止しないようにしても、生成されるEXEには問題ありません。

日付をNULLにできると思いますよ。
Database Desktopを使用してクリアするとNULLになっています。


マキ  2002-12-13 18:09:20  No: 2325

おはようございます。

にしのさん。いつもほんとにありがとうございます。

いまは、こんな感じで作ってます。

function IsDate(StrDate : String): Boolean;
var
  RetDate : TDateTime;
begin
  Result  :=  True;
  try
    if StrDate = '' then
      Result := False
    else
      RetDate :=  StrToDate(StrDate);
  except
    on  E : EConvertError do  begin
      Result  :=  False;
    end else
      raise;
  end;
end;

これで、日付を調べて、戻ってきた値を見て

FieldByName('hiduke').AsDateTime := Null;

とすると、「バリアントの型変換が正しくありません」
というエラーがでます。

何故なのでしょうか?


マキ  2002-12-14 00:59:13  No: 2326

にしのさん。ありがとうございました。

解決しました。


※返信する前に利用規約をご確認ください。








  このエントリーをはてなブックマークに追加