2012-07-06 102 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你知道確切格式的日期和時間了,所以當你找回它,這將是完全一樣的,而不是取決於區域配置。

如果第一個函數在一臺計算機上運行,​​而第二個函數在另一臺計算機上運行,​​則使用第一種方法時仍然會出現問題。