javascript无法对com返回的64位整数比较大小
2015-09-15 11:28
555 查看
问题:
实现里有声明变量:
unsigned long long diskFreeSize, resTotalSize;
unsigned long resFileNumber;
上述js代码在firefox和chrome里均能正常运行,typeof(totalSize) 返回 string。
在IE里 返回unknown。在执行到比较大小那句,IE报错“totalSize不是数字”。
摸索:
曾试过将totalSize作为参数构造一个Number,也是报错。
baidu得知两点:
1. unknown是com类型转换存在问题;
http://stackoverflow.com/questions/10982739/typeof-returning-unknown-in-ie
2. js没有64位整数,比较大小得通过别的办法;
http://www.sharejs.com/tutorial/tutorial_class/10042
解决方案:
在c++里封装比较64位整数大小的方法,在js里调用
var vm = __g.project.packGetInfo("d:\\tttt\\", false); if(vm["isOK"]{ var totalSize = vm["resTotalSize"]; var freeSize = vm["diskFreeSize"]; alert(typeof(totalSize)); alert(typeof(freeSize)); if(totalSize > freeSize) alert("磁盘空间不足"); }其中,__g.project.packGetInfo 是COM接口,定义为:FB:VariantMap PackGetInfo(wstring Path, bool IgnoreBigDataFile);
实现里有声明变量:
unsigned long long diskFreeSize, resTotalSize;
unsigned long resFileNumber;
上述js代码在firefox和chrome里均能正常运行,typeof(totalSize) 返回 string。
在IE里 返回unknown。在执行到比较大小那句,IE报错“totalSize不是数字”。
摸索:
曾试过将totalSize作为参数构造一个Number,也是报错。
baidu得知两点:
1. unknown是com类型转换存在问题;
http://stackoverflow.com/questions/10982739/typeof-returning-unknown-in-ie
2. js没有64位整数,比较大小得通过别的办法;
http://www.sharejs.com/tutorial/tutorial_class/10042
解决方案:
在c++里封装比较64位整数大小的方法,在js里调用
int compareUInt64(FB::variant n1, FB::variant n2) { unsigned __int64 _n1 = n1.convert_cast<unsigned __int64>(); unsigned __int64 _n2 = n2.convert_cast<unsigned __int64>(); return (_n1 == _n2)? 0:(_n1>_n2? 1: -1); }js里调用:
__g.internalTool.compareUInt64(totalSize , freeSize) >= 0)
相关文章推荐
- javascript Date format(js日期格式化)
- Jsoncpp的编译和使用
- 黑帽seo劫持程序,js劫持搜索引擎代码
- JavaScript读取本地json文件
- javascript json字符串到json对象转义问题
- js中的排序
- phantomjs设置截图大小
- JS实现base64编码与解码
- JavaScript实现仿新浪微博大厅和腾讯微博首页滚动特效源码
- JS获取url参数及url编码、解码
- $.ajax返回的JSON格式的数据后无法执行success的解决方法
- JS清除网页历史记录,屏蔽后退按钮
- js简单运动框架--2 多属性运动
- JS实现仿FLASH效果的竖排导航代码
- 性能调优工具Jstack使用
- JS冒号的作用
- 【JavaScript】允许IE8使用placeholder
- jstat命令详解及显示结果含义
- 【JavaScript】创建命名空间,Class,LOG
- js常用正则