本帖最后由 hwkuan 于 2010-08-26 12:44:27 编辑

解决方案 »

  1.   

    RootKey:HKEY_CURRENT_USER
    Key:Control Panel\International
    Value:sDate在Win7中调用StrToDateTime('2009-1-1 1:1:1')时会报错,检查了下发现Win7默认的日期间隔改成‘/’了,而XP里是‘-’,这个值存入在注册表中,调用前转换下即可
      

  2.   

    可以在你程序开始的时候,比如在你MainForm的Create事件中加入如下代码,就不用手动去更改系统的时间格式了 DateSeparator:='-';
     TimeSeparator:=':';
     ShortDateFormat:='yyyy-mm-dd';
     ShortTimeFormat:='HH:mm:ss';
      

  3.   

    问题是在TService程序中不能转!
      

  4.   

    在程序启动时使用下面的代码
    SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_SSHORTDATE,'yyyy-MM-dd');
    SetLocaleInfo(LOCALE_USER_DEFAULT,locale_sTimeFormat,'HH:mm:ss');
    SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_S1159,'');
    SetLocaleInfo(LOCALE_USER_DEFAULT,LOCALE_S2359,'');
    但是有个问题,如果你的程序运行的过程中有别的程序又把你的系统时间格式改了,你的程序又会出错
      

  5.   

    恩 转之间 系统日期格式已经调过来了。 问题是 VCL Application程序中能正常转换,但是 TService程序中转换错误。
      

  6.   

    日期格式已经改成 yyy-MM-dd了前面少了一个y
      

  7.   

    问题中打字错误。 改成yyyy-MM-dd.
    tjianliang 真细心。不过真是奇怪了。难道TService程序另有玄机
      

  8.   

    调用StrToDateTime函数前执行
     DateSeparator:='-';
     TimeSeparator:=':';
     ShortDateFormat:='yyyy-MM-dd';
     ShortTimeFormat:='HH:mm:ss'; 
     也不行?不会吧
      

  9.   

    我尝试跟踪了下,TService程序中 ScanToNumber 进去后就不执行直接跳出为什么会这样呢 我汗!!
      

  10.   

    原来服务程序加载的是这个HKEY_USERS\.DEFAULT\Control Panel\International
    里面的。
    (goodhj)的方法,又试了下确实可行。