
Ubuntu日本語フォーラム

ログインしていません。
お世話になります。
Lazarus にて、文字列”2010/12/01"を単純に StrToDate で変換をかけると
"2010/12/01" is not a valid date format.
Press OK to ignore and risk data corruption.
Press Cancel to kill the program.
とエラーになってしまいます。
Lazarus の場合、何か特殊な変換方法があるのでしょうか?
ネット上で調べてみたのですが、よくわかりませんでした。
ご存知の方がいらっしゃいましたら、ご教示お願いします
オフライン
多分、日付フォーマットと日付セパレータの指定が違い、YYYY/MM/DD形式の文字列を
日付文字列として認識できていないのでは?と想像します。簡単ですが、次のコードが上
手く動作するか確認してみてください。
もし、上手く動くようなら、DateFormatとDateSeparatorをLatockさんのアプリケー
ションの仕様に合わせて初期化する事で、問題を回避できると思います。
procedure TForm1.Button1Click(Sender: TObject);
var
oldDateFormat: string;
oldDateSeparator: char;
test: TDateTime;
begin
oldDateSeparator := DateSeparator;
oldDateFormat := ShortDateFormat;
try
DateSeparator:='/';
ShortDateFormat:= 'YYYY/MM/DD';
test := StrToDate('2010/10/10');
ShowMessage(DateTimeToStr(test));
finally
DateSeparator := oldDateSeparator;
ShortDateFormat := oldDateFormat;
end;
end;
既にご存知、解決済みの場合、ご容赦ください。
オフライン
hirotarou 様
返事が遅くなり大変申し訳ございません。
教えて頂いたロジックで無事解決できました!
普通のDelphiのようにはいかないものですね^^;
オフライン
Latockさん
hirotarouです。動いてよかったです。
Delphiでも、システムの日付時刻の設定しだいでは気をつけないと行けない部分ではありますが、
Lazarusの場合、初期値を見てみるとちょっと不思議なフォーマットが設定されていたので、予想が
あたり良かったです。
ShowMessage(ShortDateFormat);
ShowMessage(LongDateFormat);
ShowMessage(DateSeparator);
互換が高いとは言えDelphiとの細かい差異がありそうなので、一つ一つ進んで行くのが良いと思い
ます。
ではまた!!
オフライン