注册 登录
编程论坛 VB6论坛

get 函数读取二进制文件,地址超出长整形范围怎么办?

czm645 发布于 2014-07-09 14:46, 1668 次点击
我想根据地址获取文件中的数据,但地址超过长整形变量的范围,请问我怎么办?
9 回复
#2
风吹过b2014-07-09 14:59
文件的地址超过了 长整形??

你的文件有多大?????超过了 2GB 一个的文件?
如果超过了2GB ,那你使用 API 进行文件读写吧。。。。。

或者使用 更新的语言进行 编程。

[ 本帖最后由 风吹过b 于 2014-7-9 15:01 编辑 ]
#3
czm6452014-07-10 08:36
文件有11.9G大,是一种由单精度数据组成的大规模网格文件,由每个数据的地址可以对应计算出这个数据的坐标(如经纬度等),谁能把API读写文件说得更明了些,拜托
#4
风吹过b2014-07-10 15:52
好吧,再次承认我对 API 不熟。试了一下,我第一步就失败。打开文件失败,网上可供参考例子的基本上都是 C/C++ 的。
基本都看不懂。
#5
bczgvip2014-07-10 16:59
咱不推荐vb6读写文件大于2GB,就算熟悉位操作也挺麻烦的。
文件大小以及超4字节到8字节整数,还是可以操作,但更麻烦了。(都是非OPEN语句。)
真想用vb6解决问题,试试下面方法吧。
1.使用CreateFileMapping。
2.自己用C/C++做个DLL。
#6
alike1232014-07-11 09:18
问楼上,c/c++做的dll  vb6.0可以用吗?这不是两个语言吗
#7
风吹过b2014-07-11 13:41
可以用的。

WINDOWS 中的 DLL ,大部分都是用 C/C++ 写。编译后都是二进制的机器代码,VB6 的真编译也是如此。
#8
茅十八2014-07-15 13:54
以下是引用czm645在2014-7-9 14:46:46的发言:

我想根据地址获取文件中的数据,但地址超过长整形变量的范围,请问我怎么办?

你就使用VB的货币变量保存地址,长整型肯定装不下12G,货币变量占8字节,肯定装装下12G

Private Sub Command1_Click()
Dim k As Currency
k = (2 ^ 30) * 12   '能装下大于12G的地址
Print k
End Sub


另外,注意一点, 当数据较大时,应自己用计算器先算出结果,再把结果直接赋给变量,别像我上面那样k = (2 ^ 30) * 12
直接把结果赋给k ,即k=12884901888。

[ 本帖最后由 茅十八 于 2014-7-15 14:05 编辑 ]
#9
风吹过b2014-07-15 14:49
回复 8 楼 茅十八
Seek 函数
返回一个 Long,在 Open 语句打开的文件中指定当前的读/写位置。
-------------------------
Seek 语句
在 Open 语句打开的文件中,设置下一个读/写操作的位置。
position 必要。介于 1 – 2,147,483,647 之间的数字,指出下一个读写操作将要发生的位置。      
-------------------------
 2,147,483,647=2G-1

====================================
VB中规定读写位置不超过 LONG 。所以你打算用 货币型变量 来 指示 读写 位置,是无效的。
#10
czm6452014-08-04 15:20
渴望有大侠指点在VB中怎么用Openfile,Readfile,Creatfile等,给个实例学习学习
1