2012-12-19 22 views
14

मैं निम्नलिखित कोड काम करने की उम्मीद:TFormatSettings अपेक्षित व्यवहार क्यों नहीं कर रहा है?

program Project3; 

{$APPTYPE CONSOLE} 

{$R *.res} 

uses 
    System.SysUtils; 

var 
    FS: TFormatSettings; 

const 
    DF = 'yyyymmdd'; 

begin 
    try 
    WriteLn(FormatDateTime(DF, Now)); 

    FS := TFormatSettings.Create; 
    FS.ShortDateFormat := DF; 
    WriteLn(StrToDate('20121219', FS)); 

    ReadLn; 
    except 
    on E: Exception do 
     Writeln(E.ClassName, ': ', E.Message); 
    end; 
end. 

यह एक अपवाद क्यों फेंक रहा है, कह रही है कि '20,121,219' कोई मान्य दिनांक नहीं है? क्या यह ठीक नहीं है कि TFormatSettings को पास करना क्या है?

+4

RTL पसंद नहीं है कि कोई तारीख विभाजक प्रारूप सेटिंग में सेट किया गया है प्रकट होता है। –

उत्तर

20

स्ट्रेटोडेट() को विभाजक की आवश्यकता होती है जिसे FS.DateSeparator: Char में परिभाषित किया गया है; और इसलिए खाली नहीं हो सकता है।

संदर्भ: http://docwiki.embarcadero.com/Libraries/XE3/en/System.SysUtils.StrToDate

+0

क्या एक बमर है। ऐसा लगता है और निरीक्षण करता है। –

+1

thx @ सर्ज आप जहां 5 सेकंड तेज ... – bummi

+3

@RemyLebeau के लिए विशेष धन्यवाद – bummi

संबंधित मुद्दे