本帖最后由 LeyBc 于 2022-6-10 02:59 编辑
不知道是不是超过4G之后取出来的都有毛病
我测试的是5.14G的
附带修复后的代码
参考地址 https://docs.microsoft.com/zh-cn ... se-win32_find_dataa
nFileSizeHigh
文件大小的高位DWORD值,以字节为单位。
nFileSizeLow
文件大小的低位DWORD值,以字节为单位。 变量名 | 类 型 | 静态 | 数组 | 备 注 | inf | WIN32_FIND_DATAW | | | handle | 整数型 | | |
handle = FindFirstFileW (文件的绝对路径, inf )判断 (handle ≠ #INVALID_HANDLE_VALUE )FindClose (handle )返回 (合并长整数_ (inf.nFileSizeLow, inf.nFileSizeHigh )) 判断 (handle = #INVALID_HANDLE_VALUE )输出调试文本 (“错误:找不到文件”)输出调试文本 (取错误信息文本_API (handle )) 返回 (0)|
合并长整数_ | 长整数型 | | |
用作合并的整数1 | 整数型 | | | | 用作合并的整数2 | 整数型 | | | | 置入代码 ({ 139, 69, 8, 139, 85, 12, 201, 195 }) 返回 (0 )
再补充一个修复代码 这个代码就是基于官方的基础上改动的
需要注意的是 易语言的 位运算是 4字节的 所以 左移没有变成8字节
其次,整数_有符号转无符号 应该传入长整数型 通过指针操作的话 应该是需要8字节的 修改之后 可以正确取出来,但是也可能影响其他的转换 所以 也带一个无符号转换的子程序吧
变量名 | 类 型 | 静态 | 数组 | 备 注 | inf | WIN32_FIND_DATAW | | | handle | 整数型 | | |
handle = FindFirstFileW (文件的绝对路径, inf )判断 (handle ≠ #INVALID_HANDLE_VALUE )FindClose (handle )返回 (整数_到无符号 (位或_ (左移_ (inf.nFileSizeHigh, 32 ), inf.nFileSizeLow )) )判断 (handle = #INVALID_HANDLE_VALUE )输出调试文本 (“错误:找不到文件”)输出调试文本 (取错误信息文本_API (handle )) 返回 (0)|
位或_ | 长整数型 | | |
位运算数值一 | 长整数型 | | | | 位运算数值二 | 长整数型 | | | | 置入代码 ({ 139, 69, 8, 139, 85, 12, 11, 69, 16, 11, 85, 20, 201, 194, 16, 0 })返回 (0 ) |
左移_ | 长整数型 | | |
欲移动的整数 | 长整数型 | | | | 欲移动的位数 | 整数型 | | | | 置入代码 ({ 139, 69, 8, 139, 85, 12, 139, 77, 16, 128, 249, 64, 115, 14, 128, 249, 32, 115, 15, 15, 165, 194, 211, 224, 201, 194, 12, 0, 49, 192, 49, 210, 235, 246, 137, 194, 49, 192, 128, 225, 31, 211, 226, 235, 235 })返回 (0 ) 如果真 (位与 (有符号整数, -2147483648 ) = -2147483648 )返回值 = 2147483648 返回 (返回值 + 位与 (有符号整数, 2147483647))
|