VBGood网站全文搜索 Google

搜索VBGood全站网页(全文搜索)

VB爱好者乐园(VBGood)

 找回密码
 立即注册
搜索
查看: 257|回复: 20

vb6读取大文件时,读取位置达到最大值后如何继续读后面的数据?

[复制链接]
发表于 2020-5-20 15:40:32 | 显示全部楼层 |阅读模式
open  xxx for bianry as #1
....
用 Pn=Seek(#1) 跟踪发现:读取位置已经达到最大值 2147483647了,再读数据时就崩溃出错了。
添加On Error goto 容错跟踪,发现读取位置一直停留在 2147483647了。
问:后面的数据该如何读出来啊?
发表于 2020-5-20 22:24:18 | 显示全部楼层
api openfile 、setfilepointer
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-21 09:03:45 | 显示全部楼层
jy4977596491 发表于 2020-5-20 22:24
api openfile 、setfilepointer

我的文件大小达30GB多,这个API能支持否?谢谢大咖指点!!!
回复 支持 反对

使用道具 举报

发表于 2020-5-21 12:34:27 | 显示全部楼层
具体没试过,没有操作过这么大的文件,但是setfilepointer有高低两个long,低的long超过2G会出错,所以超2G的要自己处理下,写到高long中就可以,这样就是64Bit了,所以30G,哪怕300G、3000G也小kiss
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-21 14:46:08 | 显示全部楼层
jy4977596491 发表于 2020-5-20 22:24
api openfile 、setfilepointer

在网上找到了你指点的API方法,外国人写了一个 Hex_edit 程序调用了API_OpenFile、API_FileSize、API_ReadFile、....等方法。我又遇到了一个匪夷所思问题:获取文件字节大小的时候,
1、用外国人的Hex_edit程序,通过CommonDialog组件选中一个大文件,调用 call API_OpenFile( CD.FileName, File_Num, File_Len)可以正确获得文件字节大小。
2、在自己的程序里call API_OpenFile( MyDatFile, File_Num, File_Len) 不能正确获得文件字节大小。但如果在窗体上添加CommonDialog组件,call API_OpenFile( CD.FileName, File_Num, File_Len)可以正确获得文件字节大小。
这是什么鬼?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-21 14:53:36 | 显示全部楼层
上面CD.FileName 与 MyDatFile 指向同一个文件。
回复 支持 反对

使用道具 举报

发表于 2020-5-21 15:58:25 | 显示全部楼层
不清楚,第一可能是mydatfile文件路径不对,第二可能是ansi、unicode问题,openfile有OpenFileA和OpenFileW两个版本
回复 支持 反对

使用道具 举报

 楼主| 发表于 2020-5-21 16:19:35 | 显示全部楼层
本帖最后由 业余的业余 于 2020-5-21 16:24 编辑
jy4977596491 发表于 2020-5-21 15:58
不清楚,第一可能是mydatfile文件路径不对,第二可能是ansi、unicode问题,openfile有OpenFileA和OpenFileW ...


设置mydatfile文件路径与CD.FileName保持一致,这点基础功还是有的。问题是API_OpenFile(ByVal FileName As String, ....)函数中的FileName参数必须通过 CD.FileName走一次,后面就能正确获取文件大小。即使是经过二手贩子、三手贩子都正确,唯独直接赋给文件路径就不行。

正确的操作:
(1) call API_OpenFile(CD.FileName,.....)===》正确获取文件大小
(2) mydatfile=CD.FileName
    call API_OpenFile(mydatfile,.....)===》正确获取文件大小
===========================
会出错的操作:(没有执行调用CD.ShowOpen赋值给CD.FileName)
mydatfile="....." '正确无误的文件路径
call API_OpenFile(mydatfile,.....)===》不能正确获取文件大小!!!
回复 支持 反对

使用道具 举报

发表于 2020-5-21 18:10:32 | 显示全部楼层
api_openfile大有问题,windows没有这个API,只有openfile,显然是封装过的,具体只能跟踪进去分析这个函数
回复 支持 反对

使用道具 举报

发表于 2020-5-21 21:01:31 | 显示全部楼层
内存文件映射?
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

文字版|手机版|小黑屋|VBGood  

GMT+8, 2020-6-7 01:53

VB爱好者乐园(VBGood)
快速回复 返回顶部 返回列表