解决方案 »

  1.   

    @seleron
    @adslong 
    兩位大俠,這種方式我試過,就是用TryStrToDate函數么,但是問題同我的方法1一樣,用單純8位日期數字會提示日期格式錯誤的。問題的糾結點就是在於8位日期數字的格式不被承認~~~~
      

  2.   


    var
      n : integer;
      nDate : TDateTime;
    begin
      if Not TryStrToInt(Trim(Edit1.Text) , n) then begin
        Edit1.SetFocus;
        ShowMessage('请输入有效的日期,例如:20140301');
      end;
      if not TryEncodeDate(n DIV 10000, (n MOD 10000) DIV 100 , n MOD 100 , nDate) then begin
        Edit1.SetFocus;
        ShowMessage('请输入有效的日期,例如:20140301');
      end;
      //到此nDate就是有效输入了
    end;
      

  3.   


    var
      fs: TFormatSettings;
      t: TDateTime;
      s: string;
    begin
      s := '20131212';
      GetLocaleFormatSettings(GetUserDefaultLCID, fs);
      fs.LongDateFormat := 'yyyy-mm-dd';
      Insert(fs.DateSeparator, s, 7);
      Insert(fs.DateSeparator, s, 5);
      TryStrToDateTime(s, t, fs);
      edt1.Text := DateTimeToStr(t);
      

  4.   


    嗯嗯,我可以直接在"TryStrToDateTime(s, t, fs);"这加上一个判断就可以达到我的目的了。
    可以说也算增加替换法吧?比我那死板的写法妙多了!!!
    感谢感谢哦!!!
      

  5.   


    您讲的好抽象~~~~
    但是看完kiboisme大神的解答,我能想到的就是您说的是不是就是kiboisme大神的那个方法?
      

  6.   


    您讲的好抽象~~~~
    但是看完kiboisme大神的解答,我能想到的就是您说的是不是就是kiboisme大神的那个方法?
    差不多吧。我一般喜欢只讲一下思路,不喜欢给代码。
      

  7.   

    换浏览器,ie,chrome,firfox,opera