Delphi.SynEdit - загрузить последние 500 КБ файла - PullRequest
2 голосов
/ 08 июня 2011

Пожалуйста, предложите мне что-нибудь.

Как загрузить в UniSynEdit / SynEdit последние 500 КБ файла, если он превышает 500 КБ?

Спасибо !!!

Ответы [ 2 ]

2 голосов
/ 08 июня 2011

Создайте 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 не представляют такой опасности.

2 голосов
/ 08 июня 2011

Один из возможных вариантов - скопировать последние 500 КБ файла во временный файл и затем попросить synEdit обработать временный файл.

...