首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > C++ Builder >

FormatDateTime的疑义

2013-11-25 
FormatDateTime的疑问先执行一下程序 try{try{throw Exception(客户别名不可以为空!)}catch(Exception

FormatDateTime的疑问
先执行一下程序
 try
  {
    try
    {

    throw Exception("客户别名不可以为空!");
    }
    catch(Exception &e)
    {
      throw Exception(e.Message);
    }
  }
  __finally
  {
    Application->ProcessMessages();
    Screen->Cursor=crDefault;
  }
抛出一个异常,然后再执行一下程序
 AnsiString A1,A2,A3;
    const AnsiString& format="yyyy-mm-dd";
    A1=Sysutils::FormatDateTime(format, 41592);
    A2=Sysutils::FormatDateTime(format, 41593);
    A3=Sysutils::FormatDateTime(format, 41594);
正常情况下A1等于2013-11-14,A2等于2013-11-15,A3等于2013-11-16
但是事实是抛出一个异常后,A2显示2013-11-14 FormatDateTime
[解决办法]
两个函数均可达到同样效果,没哪个更好.上面已经说了区别,再说也是重说一遍.
只设定不出浮点异常,可以用Set8087CW(0x133f); 也可以用 _control87(0xffff, 0x003f);
但无论用哪个函数,你说的异常后 日期不准的问题,我都无法重现.

_control87(0xffff, 0x003f);
0xffff 将对应位设为1,
MCW_EM = 0x003f ; 为CB定义的浮点异常掩码.将该位设为1,则使用8087自动处理浮点异常,而不是返回程序处理.

热点排行