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自动处理浮点异常,而不是返回程序处理.