请给我一些建议。
如果文件超过 500 KB,如何将最后 500 KB 的文件加载到 UniSynEdit/SynEdit 中?
谢谢!!!
您有一个选择是将文件的最后 500 KB 复制到临时文件中,然后让 synEdit 处理临时文件。
创建一个TFileStream
并寻找到您要从中加载的位置,然后将流传递给编辑控件。它应该从当前位置加载。
var
stream: TStream;
begin
stream := TFileStream.Create(filename, fmOpenRead);
try
stream.Seek(-500 * 1024, soEnd);
edit.Lines.LoadFromStream(stream);
finally
stream.Free;
end;
end;
请注意,如果文件被编码为 UTF-8 或其他每个字符使用可变字节数的编码,则跳转到文件中的任意位置是不安全的。您可能会跳转到一个代表双字节序列后半部分的字节,然后您读取的所有后续字符都可能被错误地解释。ANSI 和 UTF-16 文件没有这种危险。