18 个解决方案
#1
举例说明
#2
#3
? eval(trans(fsize('c:\aaa.iso'),'@0'))
#4
我一个文件4个多G,用FSIZE()出来的是172935165,这个显然有问题的。
9位字节大概也就976M,现在比这个大的文件很多了,我定期查数据库的备份文件是否正确,数据库的文件在10G左右
? eval(trans(fsize('c:\aaa.iso'),'@0'))
这个语句用了效果是一样的,还有没有什么办法?
9位字节大概也就976M,现在比这个大的文件很多了,我定期查数据库的备份文件是否正确,数据库的文件在10G左右
? eval(trans(fsize('c:\aaa.iso'),'@0'))
这个语句用了效果是一样的,还有没有什么办法?
#5
用 Fsize() 前要行执行:
SET COMPATIBLE ON
SET COMPATIBLE ON
#6
9位数:
?100000000/1024/1024
得到95.37G
?100000000/1024/1024
得到95.37G
#7
我用 vfp9,用上面的代码测试一个 4G 左右的 DVD 映像文件没问题,返回正确的字节数
#8
我用的是VFP6,怎么试都不行,估计是软件本身问题,估计当时定位的时候没想到会这么大。
想用seek来做,结果fopen打开网络盘符的文件居然返回-1,我彻底晕了
另
?100000000/1024/1024
这个出来的95.37是兆
fsize返回的是字节数
1M=1024K
1k=1024B
想用seek来做,结果fopen打开网络盘符的文件居然返回-1,我彻底晕了
另
?100000000/1024/1024
这个出来的95.37是兆
fsize返回的是字节数
1M=1024K
1k=1024B
#9
是我搞错了,少除一个1024
#10
我Fsize 和 ADIR 取得的文件大小均正常,我测试的是2G多的文件
#11
vfp6 的话,自己做一个函数转换一下,主要代码如下:
set compatible on
m.lnSize = fsize('c:\aaa.iso')
m.lcSize = substr(trans(m.lnSize, '@0'), 3)
? eval('0x'+left(m.lcSize,4))*0x10000 + eval('0x'+right(m.lcSize,4))
我没有 vfp6,需要你自己试试是否可行。
#12
实验过了,VFP6下面不行,应该是本身的位数就不够,所以没办法,看来要上VFP9了,哪里有完整点的简体中文版本下载啊。
#14
一个四G多的文件大小用于32位的数显示,明显已经溢出,而楼主所提到的将要用到的是10G的文件大小,我想就是用VFP9都估计读不出来,建议还是用API函数去读,有这么个函数GetFileSizeEx
#15
能否帮忙给个GetFileSizeEx应用的例子,没调用过API函数,谢谢了
#16
*我测式了一个 2.52G 的文件,用
Clear
Set Compatible On
? Evaluate(Transform(Fsize('D:\Program Files\Microsoft SQL Server\MSSQL\Data\onefinger.mdf'),'@0'))/1024/1024/1024 &&得到 GB
*与下面API 得到的文件都是一样的,都是对的
Declare Integer OpenFile In kernel32 String lpFileName,String @lpReOpenBuff,Integer wStyle
Declare Integer GetFileSize In kernel32 Integer hFile,String @lpFileSize
Declare Integer CloseHandle In kernel32 Integer hObject
lcReOpenBuff=Space(254)
lnHFile=OpenFile("D:\Program Files\Microsoft SQL Server\MSSQL\Data\onefinger.mdf",@lcReOpenBuff,0)
If lnHFile>0
lcFileSize=Space(254)
lnFileSize=Evaluate(Transform(GetFileSize(lnHFile, @lcFileSize),'@0'))/1024/1024/1024 &&得到 GB
?lnFileSize
CloseHandle(lnHFile)
Endif
#17
太感谢了,明天回公司试验下。
#18
#1
举例说明
#2
#3
? eval(trans(fsize('c:\aaa.iso'),'@0'))
#4
我一个文件4个多G,用FSIZE()出来的是172935165,这个显然有问题的。
9位字节大概也就976M,现在比这个大的文件很多了,我定期查数据库的备份文件是否正确,数据库的文件在10G左右
? eval(trans(fsize('c:\aaa.iso'),'@0'))
这个语句用了效果是一样的,还有没有什么办法?
9位字节大概也就976M,现在比这个大的文件很多了,我定期查数据库的备份文件是否正确,数据库的文件在10G左右
? eval(trans(fsize('c:\aaa.iso'),'@0'))
这个语句用了效果是一样的,还有没有什么办法?
#5
用 Fsize() 前要行执行:
SET COMPATIBLE ON
SET COMPATIBLE ON
#6
9位数:
?100000000/1024/1024
得到95.37G
?100000000/1024/1024
得到95.37G
#7
我用 vfp9,用上面的代码测试一个 4G 左右的 DVD 映像文件没问题,返回正确的字节数
#8
我用的是VFP6,怎么试都不行,估计是软件本身问题,估计当时定位的时候没想到会这么大。
想用seek来做,结果fopen打开网络盘符的文件居然返回-1,我彻底晕了
另
?100000000/1024/1024
这个出来的95.37是兆
fsize返回的是字节数
1M=1024K
1k=1024B
想用seek来做,结果fopen打开网络盘符的文件居然返回-1,我彻底晕了
另
?100000000/1024/1024
这个出来的95.37是兆
fsize返回的是字节数
1M=1024K
1k=1024B
#9
是我搞错了,少除一个1024
#10
我Fsize 和 ADIR 取得的文件大小均正常,我测试的是2G多的文件
#11
vfp6 的话,自己做一个函数转换一下,主要代码如下:
set compatible on
m.lnSize = fsize('c:\aaa.iso')
m.lcSize = substr(trans(m.lnSize, '@0'), 3)
? eval('0x'+left(m.lcSize,4))*0x10000 + eval('0x'+right(m.lcSize,4))
我没有 vfp6,需要你自己试试是否可行。
#12
实验过了,VFP6下面不行,应该是本身的位数就不够,所以没办法,看来要上VFP9了,哪里有完整点的简体中文版本下载啊。
#13
#14
一个四G多的文件大小用于32位的数显示,明显已经溢出,而楼主所提到的将要用到的是10G的文件大小,我想就是用VFP9都估计读不出来,建议还是用API函数去读,有这么个函数GetFileSizeEx
#15
能否帮忙给个GetFileSizeEx应用的例子,没调用过API函数,谢谢了
#16
*我测式了一个 2.52G 的文件,用
Clear
Set Compatible On
? Evaluate(Transform(Fsize('D:\Program Files\Microsoft SQL Server\MSSQL\Data\onefinger.mdf'),'@0'))/1024/1024/1024 &&得到 GB
*与下面API 得到的文件都是一样的,都是对的
Declare Integer OpenFile In kernel32 String lpFileName,String @lpReOpenBuff,Integer wStyle
Declare Integer GetFileSize In kernel32 Integer hFile,String @lpFileSize
Declare Integer CloseHandle In kernel32 Integer hObject
lcReOpenBuff=Space(254)
lnHFile=OpenFile("D:\Program Files\Microsoft SQL Server\MSSQL\Data\onefinger.mdf",@lcReOpenBuff,0)
If lnHFile>0
lcFileSize=Space(254)
lnFileSize=Evaluate(Transform(GetFileSize(lnHFile, @lcFileSize),'@0'))/1024/1024/1024 &&得到 GB
?lnFileSize
CloseHandle(lnHFile)
Endif
#17
太感谢了,明天回公司试验下。