Важная информация

User Tag List

Страница 5 из 13 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 124

Тема: Как организовать память для текстового редактора?

  1. #41
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    1) Заметных для пользователя тормозов.
    Для случая перемещений на короткие дистанции. Тормоза при переходе в начало текста могут вызвать вопросы.

    Цитата Сообщение от vinxru Посмотреть сообщение
    2) Рационального использования ОЗУ.
    В смысле отсутствие накладных расходов на индексы-указатели? Классический способ точно так же рационален.

    Цитата Сообщение от vinxru Посмотреть сообщение
    3) Простоты алгоритма.
    Он сложнее классического. Такова цена за п.1

  2. #42
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Не припомню ни одной законченной реализации задачи от тебя. Максимум- перечисление ассемблерных команд для использования.
    Я может бы за тебя всю программу написал, но мне не нравится твой стиль общения. Ты каждое свое сообщение строишь так, что мне приходится оправдываться. Ни под одним моим сообщением ты не нажал - спасибо.

    ---------- Post added at 12:06 ---------- Previous post was at 12:03 ----------

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Для случая перемещений на короткие дистанции. Тормоза при переходе в начало текста могут вызвать вопросы.
    Нет. Я написал это уже много раз. Перерисовка экрана происходит значительно дольше.

    Потому что шрифт 6 пикселей, а в байте 8 пикселей. Шрифт надо сдвигать и накладывать через AND OR на исходное изображение дважды, так как символ может быть на границе байта. (Само собой, этонадо делать лишь когда перемещение происходит дальше 25 строк.)

    ---------- Post added at 12:07 ---------- Previous post was at 12:06 ----------

    Цитата Сообщение от Vitamin Посмотреть сообщение
    В смысле отсутствие накладных расходов на индексы-указатели? Классический способ точно так же рационален.
    Всмысле того, что буфер для редактирования строки не нужен.
    Последний раз редактировалось vinxru; 02.04.2013 в 13:10.

  3. #43
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от vinxru Посмотреть сообщение
    Я может бы за тебя всю программу написал, но мне не нравится твой стиль общения. Ты каждое свое сообщение строишь так, что мне приходится оправдываться. Ни под одним моим сообщением ты не нажал - спасибо.
    Я вытаскиваю важную и интересную для себя информацию. Поскольку пока ничего нового для себя не встретил, спасибо говорить не за что. Плюс мне тоже не нравится твой стиль общения- "это и так все знают, ты тоже знаешь, но делаешь вид что нет- ты тролль". Если я знаю что-то по этому вопросу (использование SIMD), так это то, что я слишком мало знаю чтоб делать выводы на основе неполных данных.

    Цитата Сообщение от vinxru Посмотреть сообщение
    Нет. Я написал это уже много раз. Перерисовка экрана происходит значительно дольше.
    Ну это не повод делать операцию еще дольше.

    Цитата Сообщение от vinxru Посмотреть сообщение
    Всмысле того, что буфер для редактирования строки не нужен.
    А вот это зря. Буфер редактирования- очень полезная штука. В частности, можно легко сделать undo.

  4. #44
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Ну это не повод делать операцию еще дольше.
    Повод - это сделать быстрым реакцию на Enter. И длину строки ограниченную лишь объемом ОЗУ.

  5. #45
    R.I.P.
    Регистрация
    16.09.2009
    Адрес
    г. Харьков
    Сообщений
    1,466
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    4
    Поблагодарили
    4 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    Я вытаскиваю важную и интересную для себя информацию. Поскольку пока ничего нового для себя не встретил, спасибо говорить не за что. Плюс мне тоже не нравится твой стиль общения- "это и так все знают, ты тоже знаешь, но делаешь вид что нет- ты тролль". Если я знаю что-то по этому вопросу (использование SIMD), так это то, что я слишком мало знаю чтоб делать выводы на основе неполных данных.


    Ну это не повод делать операцию еще дольше.


    А вот это зря. Буфер редактирования- очень полезная штука. В частности, можно легко сделать undo.
    господа, флеймить давайте во флейме!

  6. #46
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А вот это зря. Буфер редактирования- очень полезная штука. В частности, можно легко сделать undo.
    Один UNDO не панацея. Под UNDO можно завести буфер, где каждое действие пользователя будет занимать 1-2 байта.

    Причем, второй буфер делаем REDO и копируем туда отмененные поправки.

    P.S. Уже обкатано лет 10 назад (http://vinxru.livejournal.com/9277.html)

  7. #46
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #47
    Banned
    Регистрация
    25.01.2005
    Адрес
    Miass, Chelyabinsk region
    Сообщений
    4,094
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    если чо... был такой редактор на спеке - zx-word, вот там было:

    1. буферизация ввода с клавиатуры (пока редактор тормозит, кнопочки все нажатые сохраняются)
    2. при большом тексте, если редактировать начало - все безумно тормозило. метод, о котором вы тут спорите, 100% бы помог и ничего не сделал хуже.

  9. #48
    Guru Аватар для bigral
    Регистрация
    12.07.2006
    Адрес
    г. Киев, Украина
    Сообщений
    2,147
    Спасибо Благодарностей отдано 
    25
    Спасибо Благодарностей получено 
    95
    Поблагодарили
    82 сообщений
    Mentioned
    2 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    В смысле отсутствие накладных расходов на индексы-указатели? Классический способ точно так же рационален.
    1. Что считать "классическим способом" может это тот редактор который в zxspeccy ROM? когда мы в буфер редактирования копируем строчку которую хотим отредактировать? Если да, то это бесполезное копирование строчки ПЕРЕД редактированием и ПОСЛЕ редактирования + надо ж как-то с размером разобраться, так как старая и новая строчки явно разные по размеру. Ну а если это сдвигание раздвигание всего текста при нажатии каждой кнопки то это вообще мракобесие особенно для файлов гигабайтного размера.

    2. Навигация по тексту в режиме read only и спец-режим "редактирование" (например в редакторе EX он же VI) решает вопрос с ненужным копированием строк при простом перемещении курсора по строчкам (возможно зделать это и неявно, скажем создавать этот буфер тогда когда юзверь нажал кнопку которая должна изменить строку).

    3. По поводу БОЛЬШИХ файлов я так и не понял что с ними делать, вот у меня есть логи на работе размерами по 1GB ни один из редакторов под linux c ними нормально не работает (помнится под DOS были редакторы которые и по 10Mb логи смотрели без проблем). Это конечно другая задача НО все же, как создать swap file и как его использовать эфективно?

  10. #49
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,254
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    80
    Поблагодарили
    34 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    1. Что считать "классическим способом" может это тот редактор который в zxspeccy ROM? когда мы в буфер редактирования копируем строчку которую хотим отредактировать? Если да, то это бесполезное копирование строчки ПЕРЕД редактированием и ПОСЛЕ редактирования + надо ж как-то с размером разобраться, так как старая и новая строчки явно разные по размеру. Ну а если это сдвигание раздвигание всего текста при нажатии каждой кнопки то это вообще мракобесие особенно для файлов гигабайтного размера.
    Скорее, сочетание буфера редактирования и сдвигание/раздвигание текста при возврате буфера назад.
    Если редактирования нет, заполнять буфер совсем не обязательно. Если есть- заполнение делается элементарно, указатель на следующую строку должен быть уже известен (навигация же).

    Цитата Сообщение от bigral Посмотреть сообщение
    (возможно зделать это и неявно, скажем создавать этот буфер тогда когда юзверь нажал кнопку которая должна изменить строку).
    Ну да. Примерно это и сказал. И даже одно время имплементил в редакторе.

    Цитата Сообщение от bigral Посмотреть сообщение
    3. По поводу БОЛЬШИХ файлов я так и не понял что с ними делать, вот у меня есть логи на работе размерами по 1GB ни один из редакторов под linux c ними нормально не работает (помнится под DOS были редакторы которые и по 10Mb логи смотрели без проблем). Это конечно другая задача НО все же, как создать swap file и как его использовать эфективно?
    У гугла совет спрашивал? http://stackoverflow.com/questions/1...rge-text-files

  11. #50
    Banned
    Регистрация
    01.12.2010
    Адрес
    г. Санкт-Петербург
    Сообщений
    1,657
    Записей в дневнике
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    1 сообщение
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от bigral Посмотреть сообщение
    (возможно зделать это и неявно, скажем создавать этот буфер тогда когда юзверь нажал кнопку которая должна изменить строку).
    Тогда при первом нажатии клавиши возникнут тормоза и даже если первые символы не потеряются, это будет не очень приятно.

    В обсуждаемом способе тормозов при вводе букв нет вообще.

    P.S. Хотя я этот способ то жена первых страницах предложил в качестве альтернативы.

Страница 5 из 13 ПерваяПервая 123456789 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Алгоритм текстового Quest'a
    от ALKO в разделе Программирование
    Ответов: 11
    Последнее: 23.12.2010, 00:47
  2. Как проще код из текстового файла -> Alasm-файл?
    от TomCaT в разделе Программирование
    Ответов: 10
    Последнее: 28.05.2010, 16:53
  3. Адаптация текстового редактора
    от Raydac в разделе Софт
    Ответов: 1
    Последнее: 09.06.2008, 14:27
  4. Интересная идея текстового интерфейса в играх
    от Black_Cat в разделе Программирование
    Ответов: 3
    Последнее: 18.11.2006, 15:22
  5. Проект муз. редактора для AY
    от Bulba в разделе Музыка
    Ответов: 36
    Последнее: 09.09.2005, 20:32

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •