Delphi. Аналог Memo/RichEdit

Кто-нибудь знает, есть ли аналог Memo/RichEdit? Требование: нумеровать строки, загружать большие файлы (более 5 МБ) из потока.

6 ответов

Developer Express имеет обширный набор компонентов VCL, среди которых замена Memo (TcxMemo) и редактирование RTF (хотя я не знаю о наборе функций).

TMS Software имеет очень хороший TAdvMemo с множеством подсветок синтаксиса. А также есть TRichEdit "замена". Помимо подсветки синтаксиса их памятка поддерживает номера строк. Не знаю о больших файлах, но 5 МБ не звучат так, как если бы они находились рядом с любыми ограничениями, которые они имели бы с / с.

TRichView - еще одна настоятельно рекомендуемая замена TRichEdit с большим набором функций.

Наш компонент SynMemoEx был разработан, чтобы быть легким и быстрым. Он загружает и обрабатывает 50 МБ текстового контента без проблем, включая перенос слов.

Но это только для Delphi 6 до 2007 года (пока не unicode). Но это бесплатно и с открытым исходным кодом.

Мы используем этот компонент в нашем инструменте SynProject, как для отображения версий файлов, так и для редактирования документации. И вы выделите для.pas.c.cs.h.xml.html.dfm файлов (и больше).

Он имеет нумерацию строк и другие приятные функции. Смотрите некоторые скриншоты здесь.

Компонент убийцы: Synedit - http://sourceforge.net/apps/mediawiki/synedit/index.php?title=SynEdit_Home_Page

проверить это:)

Существует ли какой-либо компонент, который может иметь связанный контент, похожий на TMemo?

Нужно (потому что это должно быть в состоянии сделать):

  • Поместите два из них с TSplitter между ними
  • Загружать контент только один раз, но показывать его на обеих (чтобы можно было видеть две части одновременно), не так, как TMemo, который вы должны скопировать на оперативную память всего контента
  • Время загрузки обычного текстового файла TXT 100 МБ менее чем за секунду (время ввода-вывода с носителя считывания исключено), другими словами, например, если у вас есть данные в ОЗУ и вы хотите отобразить их на обоих менее чем за одну секунду
  • Приложение должно быть RunAble (поэтому нет компонента, который требует отдельную dll, я знаю, как inyect dll в exe и извлекать их при запуске) и должен работать с носителя только для чтения криминалистическим способом (нигде не записывать).

В розыске:

  • Не ограничивается 3GiB в 32-битной системе (не весь загруженный файл сразу, как на уродливой оперативной памяти, требует TMemo, только показанные части)
  • Unicode и UTF-8/UTF-16 с / без заголовка спецификации и т. Д.
  • Выберите шрифт, чтобы показать текст, лучше, если бы можно было выбрать для всех шрифтов логический моно с интервалом или обычный
  • Нет ограничений на длину строки (TMemo ограничен 4KiB-1 на строку), если у вас есть строка с более чем одним миллионом символов, посмотрите ее в одной строке с правильной прокруткой полосы прокрутки и т. Д.

Не нужно:

  • Синтаксис, цвет и т.д... только для простого текста
  • WordWrap (каждая строка является строкой)

Хорошо, что я притворяюсь? краткий ответ: одновременные связанные представления простого текстового файла.

Объяснил это еще немного:

  • Представьте, что у вас есть графический интерфейс, где пользователь может добавлять "разделители"
  • Каждый разделитель делит представление (не файл) на две части... поэтому, если у вас есть N разделителей, вы можете видеть N+1 части файла одновременно
  • Каждый вид имеет собственную вертикальную полосу прокрутки, но для всех есть только одна горизонтальная полоса прокрутки (при прокрутке все виды синхронизируются по горизонтали)
  • Таким образом, пользователь может видеть первые строки в одном представлении, в то время как другие части в то же время без необходимости прокручивать вверх и вниз каждый раз

Зачем? Простой ответ: представьте, что файл представляет собой журнал и содержит более миллиона строк... снова представьте, что он похож на исторический журнал... и пользователь хочет увидеть некоторые строки дня X и дня Y и дня # ... и т. д. одновременно (для сравнения или по любой другой причине).

Если вы делаете это с TMemo, вам нужно скопировать все данные на все из них... а также 32-битное приложение ограничено 2 ГБ ОЗУ на 32-битном процессоре и 3 ГБ ОЗУ на 64-битном процессоре (f скомпилировано с помощью специального директива).

Помните, что приложение должно работать как на 32-битных, так и на 64-битных процессорах без необходимости компиляции разных версий... и должно быть RunAble и вообще не требовать записи (в любом месте) при запуске (стиль судебной экспертизы).

Я думал о возможном способе его создания... на основе TStringList, но опять же я настолько ограничен... и это так много работы с нуля.

Может быть, есть компонент, так как я видел некоторые приложения, которые могут показать вам большой файл, не загружая его, все они с собственной реализацией с нуля? или они используют компонент, о котором я не знаю?, большинство из них предназначены для шестнадцатеричного редактирования большого двоичного файла, некоторые могут редактировать файлы с большим количеством GiB, и только некоторые из них могут очень быстро вставлять и удалять, пока не сохранят (Ввод / вывод для копирования всего файла во время выполнения операций вставки / удаления может занять очень много времени, более одного часа, но вставка / удаление на экране выполняется довольно быстро (менее одной десятой секунды).

Я могу делать все, что захочу, если найду компонент, который:

  • Выглядит как TMemo
  • По коду можно смоделировать вертикальную и горизонтальную прокрутку, не касаясь выделенного выделения текста (я могу скрыть полосу прокрутки с меньшим контейнером TPanel, поэтому нет необходимости в элементе управления, чтобы скрыть полосы прокрутки)
  • Действительно очень важно: не загружать весь файл (читайте только показанную часть)
  • Иметь LoadFromFile (но на самом деле не загружать весь файл, просто внутренне хранить ссылку на файл)
  • Не нужно, но желательно: пользователь сможет редактировать как на TMemo
  • Не нужно, но желательно: есть SaveToFile для сохранения пользовательских изменений

Есть кто-нибудь?

Добавлено: бесплатно (для любого использования) и OpenSource является обязательным.

TRichView - это популярный компонент, специально разработанный для отображения, редактирования и печати гипертекстовых документов. Существует также дополнение TRichView, обеспечивающее редактирование WYSIWYG. Он имеет Unicode, импорт и экспорт RTF, экспорт HTML, версии с поддержкой данных и многое другое.

Я использую его в качестве основного компонента в моей генеалогической программе и использовал его для загрузки очень больших файлов (например, 100 МБ или более). Он может читать или писать прямо в / из потоков.

Другие вопросы по тегам