Как обычно применяются текстовые редакторы?

Этот вопрос, вероятно, заставит меня звучать довольно бестолково. Это потому что я.

Я просто думаю, если бы я гипотетически интересовался разработкой собственного графического элемента управления текстового редактора, виджета, или как вы хотите это называть (а я нет), как бы я вообще это сделал?

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

Предположительно вместо этого используется некоторая изменяемая структура данных, содержащая текст; но выяснение того, как эта структура может выглядеть, кажется мне немного сложной задачей. Случайный доступ был бы хорош (я бысчитатьв любом случае - в конце концов, разве вы не хотите, чтобы пользователь мог прыгать где-нибудь в тексте?), но потом меня интересует стоимость, скажем, перехода куда-то посередине огромного документа и запуска набрать сразу. Опять же, новичок (скажем, вы сохраняете текст в виде массива символов с изменяемым размером) может привести к очень низкой производительности, я думаю, так как с каждым символом, набранным пользователем, будет огромный объем данных для «смещения» над.

Поэтому, если бы мне нужно было сделать предположение, я бы предположил, что текстовые редакторы используют какую-то структуру, которая разбивает текст на более мелкие фрагменты (строки, может быть,?), Которые по отдельности включают массивы символов со случайным доступом и сами являются случайными доступны как дискретные куски. Четноетот кажется, что это должно быть довольно чудовищное упрощение, хотя, если оно хотя бы отдаленно близко с самого начала.

Конечно, я также понимаю, что не можетбыть «стандартный» способ реализации текстовых редакторов; может быть, это резко меняется от одного редактора к другому. Но я подумала, что поскольку эта проблема решалась много-много раз, возможно, с годами возник относительно распространенный подход.

В любом случае, мне просто интересно узнать, есть ли у кого-нибудь знания по этой теме. Как я уже сказал, я определенно не собираюсь писать свой собственный текстовый редактор; Мне просто интересно.

Ответы на вопрос(0)

Ваш ответ на вопрос