修改

开的4年前

关闭3年前

#3789 关闭 缺陷 (固定的)

当变量>2GB时,Fileread()返回空字符串

报告人: 出口 所有者: 乔恩
里程碑: 3.3.15.4条 组件: AutoIt(自动识别)
版本: 3.3.14.0 严重程度:
关键词: 复写的副本:

描述

2GB是Autoit中的最大可变大小。
如果由于UTF8 2字节处理,Fileread()达到了这个大小,那么@extended显示1073741823个读取字节,但结果字符串为空。
我认为Fileread()应该显示@error>0。
这里是一台复制机:

; proof 2GB变量文件读取错误#AutoIt3Wrapper_UseX64=y#包括<String.au3>$sTestDir=@TempDir&“测试~\”目录创建($sTestDir)文件删除($sTestDir&“*.txt”)ShellExecute($sTestDir)OnAutoItExitRegister(退出)函数退出(_E)工具提示(“”)MsgBox(64+262144,默认,“检查SciTE输出以验证Fileread()错误。”&@LF&@LF&“然后按OK退出。”,0)目录删除($sTestDir,1)睡眠(500)WinClose(“[TITLE:”&StringLeft($sTestDir,3)&“;CLASS:CabinetWClass]”)EndFunc;==>_出口$iLength=1024*1024*1024;1千兆字节$s1GB=字符串重复(“-”,$iLength)$i长度-=3对于$i=1到2工具提示(“写入记录#”&$i&“。这需要一些时间。敬请期待。”)蜂鸣音(1000100)$i长度+=1$hFileHandle=文件打开($sTestDir&$i&“.txt”,2)$sInitData=StringLeft($i和$s1GB,$iLength)FileWrite($hFileHandle,$sInitData)FileSetPos($hFileHandle,0,0)$sReadData=文件读取($hFileHandle)ConsoleWrite(@LF&“Fileread$i:”&$i&“Error:”&@Error&“Extended:”&@Extended&@LF&”Datalen:“&StringLen($sInitData)&@LF&”ReadDatalen:”&StringLen($sReadData)&@LF&“ReadData(first 10 Bytes):>”&String Left($sReadData,10)&“<”&@LF-“Stringcompare Result:”&(Stringcompare($sNitData,$sRead数据,1)?“NOT”:“”)&“等于”&@LF&@LF)工具提示(“”)如果StringCompare($sReadData,$sInitData,1),则退出MsgBox(16+262144,默认值,“Compare Error.I=”&$I,0)文件关闭($hFileHandle)下一步

这里是生成的SciTE输出:

文件读取$i:1错误:0扩展:1073741822数据长度:1073741822阅读数据长度:1073741822读取数据(前10个字节):>1----------Stringcompare结果:等于文件读取$i:2错误:0扩展:1073741823数据长度:1073741823读取数据长度:0ReadData(前10个字节):><Stringcompare结果:不等于

附件(0)

更改历史记录(3)

注释:1 改变4年前由Jpm提供

事实上,这种情况是因为AutoIt无法在输出中打开的文件上检测到数据是ANSI格式的。
因此,只需在FileOpen模式中添加512($FO_ANSI)即可。
看起来Windows对从UTF8转换为Unicode的数据长度有一些限制。
我将尝试在不修改FileOpen模式的情况下提出解决方案。

注释:2 改变4年前由Jpm提供

  • 所有者设置为Jpm公司
  • 状态已从更改新的分配

已将修复发送给Jon

注释:3 改变3年前作者:Jon

  • 里程碑设置为3.3.15.4条
  • 所有者已从更改Jpm公司乔恩
  • 分辨率设置为固定的
  • 状态已从更改分配关闭

通过修订修复[12561]版本:3.3.15.4

发表评论的指南:

  • 您不能重新打开票据,但如果您有其他信息需要添加,您仍然可以留下评论。
  • 应就论坛.

有关更多信息,请参阅票务指南的完整版本在这里.

添加注释

修改票据

行动
已关闭所有者仍将是乔恩。
作者


电子邮件地址和用户名可以保存在首选项.

 
注:请参见TracTickets公司有关使用的帮助门票。