2012-07-06 95 views
2

我填充德尔福7下的TStringList与函数的返回值:DateTimeTostr异常错误

function dateTime2str(td : TDateTime) : string; 
var 
    iformatsettings : tformatsettings; 
begin 
    GetLocaleFormatSettings(LOCALE_USER_DEFAULT, iformatsettings); 

    result := DateTimeToStr(td, iFormatSettings); 
end; 

然后我读TStringList中的每个值与该功能:

function str2DateTime(s : string) : TDateTime; 
var 
    iformatsettings : tformatsettings; 
begin 

    GetLocaleFormatSettings(LOCALE_USER_DEFAULT, iformatsettings); 


    result := strtodatetime(s,iFormatSettings); 

end; 

,但它触发EConvertError异常: '6/7/12 3:02:31 AM'不是有效的日期和时间。

为什么?

非常感谢

+1

我猜这种格式的日期字符串不适合这台机器上的区域设置。 – 2012-07-06 08:52:41

+0

好的,但我使用相同的iformatsettings为2功能 – user382591 2012-07-06 09:12:19

+0

你确定吗?你是说你在同一台机器上运行这些功能? – 2012-07-06 09:43:30

回答

0

使用的FormatDateTime你知道确切格式的日期和时间了,所以当你找回它,这将是完全一样的,而不是取决于区域配置。

如果第一个函数在一台计算机上运行,​​而第二个函数在另一台计算机上运行,​​则使用第一种方法时仍然会出现问题。