我有以下代码
aDate := StrToDate(date, GetLocaleFormatSettings(LOCALE_SYSTEM_DEFAULT));
function GetLocaleFormatSettings(ALCID: integer): TFormatSettings;
//------------------------------------------------------------------------------
begin
if (ALCID <> gLCID) then
begin
gLCID := ALCID;
gFormatSettings := TFormatSettings.Create(gLCID);
// TKR - 3/25/10 - C13689: TwoDigitYearCenturyWindow is not set via GetLocalFormatSettings
gFormatSettings.TwoDigitYearCenturyWindow := 75;
end;
Result := gFormatSettings;
end;
它工作得非常好,但有时当我将系统日期格式更改为dd / mm / yyyy时,它会崩溃并抛出异常。其他时候它只是没有任何问题的价值。从其他一些SO线程我发现我们需要正确设置 DateSeparator 。但是可以根据用户设置在运行时设置吗?
注意:只有在我运行应用程序后更改日期设置时才会发生这种情况。如果我关闭应用程序并执行它,我没有收到任何错误。