2

请给我一些建议。

如果文件超过 500 KB,如何将最后 500 KB 的文件加载到 UniSynEdit/SynEdit 中?

谢谢!!!

4

2 回答 2

2

您有一个选择是将文件的最后 500 KB 复制到临时文件中,然后让 synEdit 处理临时文件。

于 2011-06-08T13:53:20.750 回答
2

创建一个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 文件没有这种危险。

于 2011-06-08T13:54:07.850 回答