游戏开发论坛

 找回密码
 立即注册
搜索
查看: 1724|回复: 1

在DXUT中把DOUBLE转换成_bstr_t和SYSTEMTIME时出问题

[复制链接]

4

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
发表于 2010-1-18 15:28:00 | 显示全部楼层 |阅读模式
我用_variant_t来读取数据库的时间字段,然后转换成_bstr_t和SYSTEMTIME,但转换后 的时间值转换后总有误差,例如10:01:00变成10:01:52。无论_bstr_t还是SYSTEMTIME都是这样。奇怪的是:1、这段程序在同一个程序中不同的地方结果不一样,在DXUT架构中放在OnD3D9CreateDevice中会这样,而放在OnD3D9CreateDevice之前发生的例如IsD3D9DeviceAcceptable则结果正常。2、这段程序放在普通的控制台程序(不使用DXUT架构)中结果正常。3、在另一台机器上同样的程序同样的位置(OnD3D9CreateDevice)结果正常,区别是那台机器是XP而有问题的机器是vista。
不知道有没有人遇过这样的问题。求解!


我数据库中读出时间字段 用几多种方法,例如COleDateTime cOleTime=pRs->GetCollect(字段名).date;_variant_t vtime=(_variant_t)pRs->GetCollect(字段名);CString c =(CString)pRs->GetCollect(字段名);double dd=(double)pRs->GetCollect(字段名);等等。其中vtime和dd获得的值在OnD3D9CreateDevice之前和之后的是一样的,另外的则出现上述的变化。
应该是double到Cstring的转换或double到COleDateTime的转换有问题。到底在VISTA中的OnD3D9CreateDevice干了什么?
该程序在其他的XP机器上没有这个问题,因担心系统的兼容性,不想绕过去。有没有人遇过这个问题啊?最后不行就唯有重装VISTA再试试。 [em10] [em10]

4

主题

6

帖子

6

积分

新手上路

Rank: 1

积分
6
 楼主| 发表于 2010-1-19 14:22:00 | 显示全部楼层

Re:在DXUT中把DOUBLE转换成_bstr_t和SYSTEMTIME时出问题

就是这段小程序
double dd = 40175.417939814812;
SYSTEMTIME   timeDest1,timeDest2;
VariantTimeToSystemTime(dd,&timeDest1);
g_pD3D->CreateDevice( D3DADAPTER_DEFAULT, D3DDEVTYPE_HAL, hWnd,
                                      D3DCREATE_SOFTWARE_VERTEXPROCESSING,
                                      &d3dpp, &g_pd3dDevice );
VariantTimeToSystemTime(dd,&timeDest2);

按道理 timeDest1 的值应该和timeDest2的值一样,但实际上不一样。到底问题出在哪里???
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

作品发布|文章投稿|广告合作|关于本站|游戏开发论坛 ( 闽ICP备17032699号-3 )

GMT+8, 2025-6-16 00:22

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表