私は古いアプリケーションを持っています。データには、ローカライズされた形式の日付が格納されています。この文字列は表示にのみ使用されていたため、ローカライズされた形式で使用できました。 これをTDateTimeとして再利用する必要があります。シンプルなように思えました。DateToStrから文字列を取得したため、StrToDateを使用して文字列を元に戻します。だから私はそれを確認するために、小さなコンソールプログラムを書いた:StrToDateはDateToStrから取得した値を変換できません
program Project1;
{$APPTYPE CONSOLE}
{$R *.res}
uses
System.SysUtils;
var
S:String;
D: TDateTime;
begin
S := DateToStr(Now);
Writeln(S);
D := StrToDate(S); //! throws an EConvertError
Readln;
end.
それはEConvertErrorをスロー: プロジェクトProject1.exeのは'28」というメッセージと例外クラスのEConvertErrorを上げました。 9. 2017年は有効な日付ではありません。 これは間違っていますが、上記の例外的な日付が有効です!ちょうど一瞬前にDateToStrによって生成されました。 これは完全に私には意味をなさない。 これはWindows 10のバグでしょうか?
どのように失敗しますか?それはエラーを投げますか?予期しない出力がありますか? – PrestonM
それは動作します。安心してください。 –
[mcve] please .. –