CSVから日付を取得する場合のエラー回避(del6Personal)

解決


あそう  2009-05-15 20:07:07  No: 34424

Delphi 6 Personalです。
stringlistを使い、CSVファイルを取り込む処理を行っています。
取り込み自体は正常に出来ています。

CSVの中に日付項目があるのですが、データによっては日付が入っていない場合と入っている場合があります。

var
 myDate: TDate;
 SL: TstringList;


あそう  2009-05-16 23:25:05  No: 34425

済みません、なぜか途中で切れてしまいました。

続きです。
begin
 myDate := strtodate(SL.strings[1]);//1は日付フィールド

で処理しようとしたとき、元の値が空値だったりすると「''は日付ではありません」というエラーになります。

そこで、
try
 myDate := strtodate(SL.strings[1]);//1は日付フィールド
except
 myDate := strtodate('1990/1/1');//暫定の日付を代入
end;

で回避しようとするのですが、同様のエラーが出てしまい、回避できません。
何がマズイのでしょうか。


ぼるしち  2009-05-17 00:24:27  No: 34426

こんにちは。

デバッガが例外を捕まえているだけのようです。
デバッガ無しで実行すれば例外は出てこないと思います。
ただ、そもそもtry〜exceptで処理しなくてもよいと思います。

解決策として、StrToDateDefを使うと楽だと思います。

myDate := StrToDateDef(SL[1],StrToDate('1990/1/1'));

※当然ですがSL[1]が存在すると言うことが前提です。


あそう  2009-05-20 18:44:59  No: 34427

StrToDateDefを使えばいいのですね。どうもありがとうございました。

ただ、デバッガの件ですが、exeから実行してもおなじような表示が出ておりました。


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

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






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