我有以下一段代码
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。但是可以根据用户设置在运行时设置它吗?
注意:仅当我在运行应用程序后更改日期设置时才会发生这种情况。如果我关闭应用程序并执行它,我不会收到任何错误。