|
|
| Посл.отвђт | Сообщенiе |
|
|
Дата: Янв 9, 2004 03:56:49 Существуют ли специальные алгоритмы для редактирования текста? У меня текст - просто ASCIIZ строка и при вставлении символа в начало, в середину, весь хвост сдвигается вправо, что не есть хорошо, а на большее мозгов не хватает. :( |
|
|
Дата: Янв 9, 2004 04:41:56 Ты же вопрос конкретно не задал. Скажи хоть, что тебе нужно сделать. |
|
|
Дата: Янв 9, 2004 04:44:40 не спится? |
|
|
Дата: Янв 9, 2004 04:52:57 Toxic Алгоритм... (жалестно так... :) Ну куда уж конкретней, хочу выяснить, как надо с текстом работать. Не катит что-то двигать 64k туда-обратно,когда юзер просто стер маленькую букву в начале текста и приписал заглавную. Естественно, это не единственный случай, он же может и абзацы местами поменять, и ошибки в середине 500k-байтного текста править, он же офигеет, когда на каждое нажатие клавиши я начну все это по памяти гонять, а ведь еще и окошко перерисовывать нужно... |
|
|
Дата: Янв 9, 2004 04:57:13 дык а нах оно тебе надо? эдит же сам это все делает... или ты его не собираешься юзать? |
|
|
Дата: Янв 9, 2004 05:01:48 полусонный я, так что не пинайте сильно Самое простое, что приходит в голову - читать в какой-нибудь буффер текущий ввод пользователя, и изменять "хранилище текста" когда этот буфер целиком заполнится. |
|
|
Дата: Янв 9, 2004 05:02:32 Sickle Edit 500Кб делает очень плохо... hGoblin Файл можно разбить на несколько фрагментов по ~1Кб и работать с ними по отдельности. По этой теме я не слышал о существовании каких бы то ни было специальных алгоритмов. |
|
|
Дата: Янв 9, 2004 05:09:12 Sickle Ага, эдит мне нафиг не нужен. Все свое, родное :) Quantum Дык, разобью, а юзер вылезет за границу килобайта. Новый резервировать? а он туда один симол нарисует и в следующий фрагмент пойдет,... Я так быстро всю память забью :( |
|
|
Дата: Янв 9, 2004 05:11:57 временный файл создавать... и в него по кусочкам записывать. а потом, когда сохранять будешь - соберешь... |
|
|
Дата: Янв 9, 2004 05:16:48 Самое простое, что приходит в голову - читать в какой-нибудь буффер текущий ввод пользователя, и изменять "хранилище текста" когда этот буфер целиком заполнится. Главное забыл. В буфер этот писать надо окромя самих буковок ещё и их позиции, естественно. И тогда настанет счастие. |
|
|
Дата: Янв 9, 2004 05:19:04 hGoblin Новый резервировать? Можно предусмотреть запас около 10-25% на такой случай. Последний раз я такое на Турбо-Паскале писал, в школе... Можно ещё по принципу БД устроить, хотя тоже самое будет в конечном счёте. Есть тут спец. по этим вопросам, но он обижается, когда его так называют :-) |
|
|
Дата: Янв 9, 2004 05:27:56 coder, Quantum Спасибо, напишу буфер с запасом :) |
|
|
Дата: Янв 9, 2004 11:33:51 Лшь бы у вас в итоге ОС не получилась, а то файлы писать, запас 10-25% это очень большая цифра. hGoblin Какую прогу ты пишешь? |
|
|
Дата: Янв 9, 2004 12:22:39 Lex Какую прогу ты пишешь? Дык, текстовый редактор :) Только мне нужны различные шрифты, изображения, произвольное расположение этого добра и тотальный контроль. Так что richedit отпадает. На мой вкус, к счастью. |
|
|
Дата: Янв 9, 2004 16:59:59 hGoblin Я не помню писал ли это или нет. Глянька разреженные массивы. А так в кратсе. Массив значешь что такое??? Во.. Теперь что такое разреженный массив. Это когда он в памяти распологается прерывисто. Например, пусть 0 элемент массива -- его размер. Элемент 1 -- Используемый размер Последний элемент -- указатель на следующий блок массива. Итак. Вот наш массив, пока он непрерывен. Мы договариваемся, что будем выделять память блоками по 4k [========================] Если пользователь ткнул букву... [===*====================] Что мы делаем??? 1. Выделяем 4k 2. Определяем в каком 4k блоке произошло изменение 3. Копируем кусок после в новую память 4. Устанавливаем указатели Теперь у нас 2 блока [===*->[указатель на блок 20000000]================] 2 -> [==============] Я надеюсь было чуть чуть понятно. |
|
Powered by miniBB 1.6 © 2001-2002
Время загрузки страницы (сек.): 0.072 |