お知らせ

  • 利用規約を守って投稿してください。また、よくある質問および投稿の手引きも参照してください。
  • メッセージの投稿にはアカウントが必要です。未登録の方は、ユーザ登録ページからアカウントを作成することができます。

#1 2010-12-24 23:07:41

Latock
新しいメンバ
登録日: 2010-12-19

Lazarus での 文字列から日付への変換について

お世話になります。
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 の場合、何か特殊な変換方法があるのでしょうか?
ネット上で調べてみたのですが、よくわかりませんでした。

ご存知の方がいらっしゃいましたら、ご教示お願いします

オフライン

 

#2 2010-12-25 01:33:36

hirotarou
新しいメンバ
登録日: 2010-12-25

Re: 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;

既にご存知、解決済みの場合、ご容赦ください。

オフライン

 

#3 2010-12-26 09:14:23

Latock
新しいメンバ
登録日: 2010-12-19

Re: Lazarus での 文字列から日付への変換について

hirotarou 様

返事が遅くなり大変申し訳ございません。
教えて頂いたロジックで無事解決できました!

普通のDelphiのようにはいかないものですね^^;

オフライン

 

#4 2010-12-27 00:56:19

hirotarou
新しいメンバ
登録日: 2010-12-25

Re: Lazarus での 文字列から日付への変換について

Latockさん

hirotarouです。動いてよかったです。

Delphiでも、システムの日付時刻の設定しだいでは気をつけないと行けない部分ではありますが、
Lazarusの場合、初期値を見てみるとちょっと不思議なフォーマットが設定されていたので、予想が
あたり良かったです。

  ShowMessage(ShortDateFormat);
  ShowMessage(LongDateFormat);
  ShowMessage(DateSeparator);

互換が高いとは言えDelphiとの細かい差異がありそうなので、一つ一つ進んで行くのが良いと思い
ます。

ではまた!!

オフライン

 

Board footer

Powered by FluxBB