相关疑难解决方法(0)

文件大小计算,Int64,以及32位和64位之间的差异

我遇到以下代码问题:

var
  FileSize : Int64;
...
FileSize := Info.nFileSizeLow or (Info.nFileSizeHigh shl 32);
Run Code Online (Sandbox Code Playgroud)

我期望它能够工作,因为Int64任务的左侧类型.但事实并非如此.包含shl似乎产生溢出的部分计算.

所以我改成了:

FileSize := Info.nFileSizeLow or (Int64 (Info.nFileSizeHigh) shl 32);
Run Code Online (Sandbox Code Playgroud)

它适用于我的32位操作系统,但不适用于Vista 64位!

最后,

FileSize := Info.nFileSizeHigh;
FileSize := FileSize shl 32;
FileSize := Info.nFileSizeLow or FileSize;
Run Code Online (Sandbox Code Playgroud)

适用于两个系统.

有人可以解释这三个版本的差异吗?

delphi delphi-2010

3
推荐指数
1
解决办法
2579
查看次数

标签 统计

delphi ×1

delphi-2010 ×1