【发布时间】:2011-01-23 16:23:41
【问题描述】:
我在 Delphi 中制作了一个工具来创建彩虹表。在文件增长到 3.1 GB 之前一切正常。我关闭了我的程序。然后我再次打开它并在执行此代码时崩溃:
Assign(RainbowFile,'Rainbow_table.txt'); {assign a text file}
Append(RainbowFile);
Delphi 显示错误“引发了预期类 EInOutError,并带有消息‘I/O 错误 131’。 我的问题:如何将数据附加到大于 2 GB 的现有文件中。 // 过时的 下一个问题: 我目前有代码:
Content_to_file := (#13+#10+Start_string+':'+hexstr(GTA_San_Andreas_CRC32(Start_string), 8));
RainbowFile_handle.WriteBuffer( Content_to_file[1], Length(Content_to_file)*SizeOf(Char));
如何摆脱 Content_to_file 变量。如果可能的话,我想把它直接放到 WriteBuffer 中。
编辑:
TFileStream 适用于大于 2 GB 的文件。我现在测试了它。 但是可以这样写吗:
RainbowFile_handle.WriteBuffer( Start_string[1]+':',
我的意思是不传递变量参数。还是我肯定传递了变量的第一个字符?
编辑 2:
我目前是这样做的:
Content_to_file := (#13+#10+Start_string+':'+hexstr(GTA_San_Andreas_CRC32(Start_string), 8));
RainbowFile_handle.WriteBuffer( Content_to_file[1], Length(Content_to_file)*SizeOf(Char));
没有这个变量可以吗?
【问题讨论】:
-
您的文件系统是否支持大于 2GB 的文件?
-
是的,确实如此。我有 Windows XP 32 位。目前我的 NTFS 分区上的文件为 3.1 GB。问题出在我的帕斯卡代码上。