Delphi Pascal – 如何将数据写入大于2 GB的文件?
发布时间:2020-12-15 10:05:37 所属栏目:大数据 来源:网络整理
导读:我在Delphi中创建了一个工具来创建彩虹表.直到文件长达3.1 GB才行.我关闭了我的程序.然后我再次打开它,并在执行此代码时崩溃: Assign(RainbowFile,'Rainbow_table.txt'); {assign a text file}Append(RainbowFile); Delphi显示错误“引发了Exection类EInOut
我在Delphi中创建了一个工具来创建彩虹表.直到文件长达3.1 GB才行.我关闭了我的程序.然后我再次打开它,并在执行此代码时崩溃:
Assign(RainbowFile,'Rainbow_table.txt'); {assign a text file} Append(RainbowFile); Delphi显示错误“引发了Exection类EInOutError与消息’I / O错误131′. 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]+':', 我的意思是传递不变参数.还是我确定通过变量的第一个char? 编辑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)); 没有这个变量可以做到吗? 解决方法
你应该切换到流.
TFileStream 将处理这个没有问题.请注意,如果您使用随机访问,则必须确保使用64位版本的
Seek 和
Position .
打开文件流后,您可以尝试到最后: Stream.Seek(0,soEnd); 那么你可以这样写行: procedure StreamWriteLine(Stream: TFileStream; Text: string); begin Text := Text + sLineBreak; Stream.WriteBuffer(Text[1],Length(Text)*SizeOf(Char)); end; 希望,这应该给你足够的线索填写其余的细节. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |