При загрузке из StringList в RichEdit выходит ошибка class EOutOfResources и line insertion error

Вот код, после которого выходит такая ошибка:

var
  i:string;
  sl2: TStringList;
begin
  re1.Clear;
  sl2 := TStringList.Create;
  sl2.LoadFromFile('0_doc.rtf');
  re1.Lines.AddStrings(sl2);

Ответы (1 шт):

Автор решения: MBo

А зачем так делать?

re1.Lines.LoadFromFile('0_doc.rtf');

загрузит файл правильно, с обработкой внутреннего форматирования.

В StringList же загрузятся сырые строки типа {\rtf1\adeflang1025\ansi\ansicpg1251\uc1\adeff0\de и не факт, что они считаются правильно - как в StringList, так и при перебросе в РичЕдит.

Кроме того, в зависимости от версии RichEdt.dll размер текста в нём может быть ограничен (например, 64 КБ когда-то было).

Проверить лимит размера - EM_GETLIMITTEXT, но если не загружает маленькие файлы - дело не в размере.

Если нужна загрузка по частям для визуальных целей, можно создать невидимый RichEdit и копировать из него.

Можно также воспользоваться сообщением EM_STREAMIN. Вот какой-то древний пример я делал

→ Ссылка