Существует ли какой-либо компонент, который может иметь связанный контент, похожий на 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-битном процессоре (скомпилировано со специальной директивой).
Помните, что приложение должно работать как на 32-битных, так и на 64-битных процессорах без необходимости компиляции разных версий ... и должно быть RunAble и вообще не требовать записи (в любом месте) при запуске (стиль судебной экспертизы).
Я подумал о возможном способе его создания ... на основе TStringList, но опять же я настолько ограничен ... и это так много работы с нуля.
Может быть, есть компонент, так как я видел некоторые приложения, которые могут показать вам большой файл, не загружая его, все они с собственной реализацией с нуля? или они используют компонент, о котором я не знаю?, большинство из них предназначены для шестнадцатеричного редактирования большого двоичного файла, некоторые могут редактировать файлы большого количества GiB, и только некоторые из них могут вставлять и удалять действительно быстро, пока они не сохранятся ( Ввод / вывод для копирования всего файла при выполнении ожидающих операций вставки / удаления может занять очень много времени, более одного часа, но выполнение вставки / удаления на экране выполняется довольно быстро (менее одной десятой секунды).
Я могу делать все, что захочу, если найду компонент, который:
- выглядит как TMemo
- По коду можно смоделировать вертикальную и горизонтальную прокрутку, не касаясь выделенного выделения текста (я могу скрыть полосу прокрутки с меньшим контейнером TPanel, поэтому нет необходимости в элементе управления, чтобы скрыть полосы прокрутки)
- Действительно очень важно: не загружать весь файл (только читать показанную часть)
- Иметь LoadFromFile (но на самом деле не загружать весь файл, просто хранить внутреннюю ссылку на файл)
- Ненеобходимо, но желательно: пользователь может редактировать, как на TMemo
- Не нужно, но желательно: есть SaveToFile для сохранения пользовательских изменений
Есть кто-нибудь?
Добавлено: бесплатно (для любого использования) и OpenSource является обязательным.