Цитирую ответ, данный Дэвидом Пейтом из групп новостей :
Следующие замечания относятся к версиям Delphi, использующим элемент управления Windows Richedit версии 1. Я понимаю, что это относится ко всем версиям Delphi до версии 7. (Я не знаю, в какой ситуации вы запускаете программы, скомпилированные в этих версиях, в различных версиях Windows NT / 2000, хотя Windows XP ведет себя так, как описано.)
Q. Какое ограничение на количество текста, которое может содержать Richedit? О. Файлы справки (Delphi help и Win32 SDK) сбивают с толку, противоречивы и некорректны в этом вопросе. Есть 5 ограничений, которые следует учитывать
Максимальная емкость: «жесткая» граница, т. Е. Максимальный размер текстового буфера RichEdit. Это на 2 байта меньше, чем 2 Гб. Обратите внимание, что это теоретический предел; на практике предел будет определяться памятью вашего компьютера.
Емкость: фактический размер текущего буфера. По умолчанию это 64 КБ, но его можно изменить несколькими способами.
«Лимит клавиатуры»: предел, после которого нельзя добавлять символы с клавиатуры. Он часто отличается от Capacity, но, как и Capacity, он по умолчанию равен 64 КБ и может быть изменен несколькими способами.
Свойство MaxLength объекта tRichEdit. По умолчанию 0 устанавливает емкость и «предел клавиатуры» на 64 КБ.
Предел числа строк: теоретически это около 134 миллионов, но на практике вы можете ожидать получить намного меньше, чем это. Максимальное количество строк зависит от нескольких факторов, включая объем доступной памяти и среднюю длину строк. Я считаю, что я могу получить от 150 до 200 тысяч строк. Также обратите внимание, что сообщалось, что некоторые выпуски элемента управления Windows 95 Richedit иногда выдают исключение, когда добавляется более нескольких сотен строк. По-видимому, это связано с ошибкой в элементе управления и исправлено в более поздних выпусках ..
Q. Как я могу увеличить объем текста, который может содержать tRichEdit?
A. Когда вы добавляете текст программно, размер и «ограничение клавиатуры» изменяются в соответствии с добавляемым текстом. Под программным добавлением текста я имею в виду использование любого из методов Add, Append, AddStrings или Assign свойства tRichEdit.Lines или методов LoadFromFile, LoadFromStream или SetTextBuf объекта tRichEdit. Обратите внимание, что добавление текста таким способом не обновляет свойство MaxLength.
B. Используя свойство MaxLength. Это устанавливает «предел клавиатуры» на значение, переданное MaxLength. Это также увеличивает емкость, чтобы соответствовать «пределу клавиатуры», если существующая емкость меньше, чем MaxLength. Обратите внимание, что вы не можете использовать MaxLength для уменьшения Capacity и что изменение MaxLength не имеет никакого эффекта, если переданное значение меньше, чем длина текста, который в данный момент находится в элементе управления. Чтобы увеличить Capacity и «Keyboard limit» до одного значения, установите для tRichEdit.MaxLength желаемое значение. Чтобы установить максимальный размер в Инспекторе объектов, используйте значение 2147483645 ($ 7FFFFFFD). Чтобы установить его программно, проще использовать .MaxLength: = System.MaxInt-2 ;. Сообщения EM_LIMITTEXT и EM_EXLIMITTEXT также можно использовать для изменения «предела клавиатуры» и емкости, но я бы не рекомендовал их использовать, поскольку, если вы это сделаете, вы не будете обновлять свойство MaxLength.