GetFileSize的问题 ( 积分: 50 )

  • 主题发起人 主题发起人 awfigsk
  • 开始时间 开始时间
A

awfigsk

Unregistered / Unconfirmed
GUEST, unregistred user!
如果一个文件超过了4G,那用GetFileSize取回的文件大小怎么表示?<br>并且用字符串如何显示出来?<br>还请高手指点!谢谢!
 
如果一个文件超过了4G,那用GetFileSize取回的文件大小怎么表示?<br>并且用字符串如何显示出来?<br>还请高手指点!谢谢!
 
function GetFileSize(hFile: THandle; lpFileSizeHigh: Pointer): DWORD; stdcall;<br>lpFileSizeHigh指针指向一个存放高32位地址的DWORD变量,函数本身返回低32位地址,这样不就有了64位的空间了。<br>至于怎么显示在字符串中,可以将低的放在一个字符串里面,高的放在另外一个字符串里面,两个字符串相加不就可以了^_^
 
或者直接用TFileStream打开,然后取其Size,那可是int64啊。
 
Function FileSizeEx(AFileHandle:Cardinal):Int64;<br>var<br> &nbsp;H,L:DWord;<br>begin<br> &nbsp;Result := 0;<br> &nbsp;L := GetFileSize(AFileHandle, @H);<br> &nbsp;Result := H;<br> &nbsp;Result := (Result shl 32) or L;<br>end;
 
var<br> &nbsp;FSize: Int64;<br>begin<br> &nbsp;PInteger(@FSize)^ := GetFileSize(FileHandle, Pointer(Integer(@FSize)+4));<br><br>end;
 
谢谢!<br>后面这两种方法的确不错!
 
后退
顶部