Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Delphi программирование > Общие вопросы Delphi
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 06.03.2008, 23:54   #1
Михаил Юрьевич
Форумчанин
 
Аватар для Михаил Юрьевич
 
Регистрация: 25.12.2007
Сообщений: 655
Восклицание код для текстового редактора

Подскажите код для текстового редактора что-бы
можно было вернуться на шаг назад,как в WordPad
(то есть что то написал,удалил,а потом вернул нажав
на кнопку "вернуть)
За частые поиски был забанен во всех известных
поисковых системах!
Михаил Юрьевич вне форума Ответить с цитированием
Старый 07.03.2008, 09:03   #2
puporev
Старожил
 
Регистрация: 13.10.2007
Сообщений: 2,740
По умолчанию

Можно действовать так:
Создать переменную bufer:string;
Процедура Удаление
1.buf:='';
2.копировать в буфер, то что удаляете
3.удаление
Процедура Отмена
insert(buf,s,i);
Примерно такая последовательность. Можно создать например три буфера, чтобы отменять три последних удаления. А код надо писать в контексте вашей программы.
puporev вне форума Ответить с цитированием
Старый 07.03.2008, 18:46   #3
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Позвольте вопрос по теме.

В Delphi 7 (по крайней мере у меня), можно возвращаться назад до последнего сохранения, - сколько там буферов?
- Может они просто динамически создаются?
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 07.03.2008, 20:16   #4
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 31.05.2007
Сообщений: 266
По умолчанию

я сделал у себя в программе отмену до 3-х действий. Действительно, во всех серьезных программах наподобие Word, Photoshop, Delphi отмена идет до самого начала. Как это можно реализовать?
andrey4623 вне форума Ответить с цитированием
Старый 07.03.2008, 20:20   #5
Карась
Участник клуба
 
Аватар для Карась
 
Регистрация: 26.10.2007
Сообщений: 1,244
По умолчанию

Используя динамический массив.
Умом Россию не понять, пока не выпито ноль пять,
А если выпито ноль пять всё делом кажется не хитрым,
Попытка глубже понимать уже попахивает литром...
Карась вне форума Ответить с цитированием
Старый 07.03.2008, 20:22   #6
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Как вариант.

Код:
array[0..999999] of string;
Массив не будет занимать много места, пока его не заполнить.
Или в файл записывать изменения, каждое изменение с определённой цифры начинается, так можно и отмену и повтор реализовать.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 07.03.2008, 20:33   #7
B_N
Новичок
Джуниор
 
Регистрация: 18.01.2008
Сообщений: 1,720
По умолчанию

Цитата:
Сообщение от Air Посмотреть сообщение
Как вариант.

Код:
array[0..999999] of string;
Массив не будет занимать много места, пока его не заполнить.
Или в файл записывать изменения, каждое изменение с определённой цифры начинается, так можно и отмену и повтор реализовать.
Не нужно делать никаких массивов, тем более, четырехмегабайтных, просто так. Изменения накапливаются последовательно, поэтому идеальные структуры для их хранения - списки или стэки. К тому же, желательно оптимизировать добавление данных, чтобы не записывать каждый раз весь документ
B_N вне форума Ответить с цитированием
Старый 07.03.2008, 20:37   #8
andrey4623
Форумчанин
 
Аватар для andrey4623
 
Регистрация: 31.05.2007
Сообщений: 266
По умолчанию

Цитата:
Сообщение от Air Посмотреть сообщение
Как вариант.

Код:
array[0..999999] of string;
Массив не будет занимать много места, пока его не заполнить.
Или в файл записывать изменения, каждое изменение с определённой цифры начинается, так можно и отмену и повтор реализовать.
а если я делаю отмену-повтор структуры, в которой по 30 элементов?
andrey4623 вне форума Ответить с цитированием
Старый 07.03.2008, 22:40   #9
Air
Участник клуба
 
Аватар для Air
 
Регистрация: 30.04.2007
Сообщений: 1,307
По умолчанию

Я в какой-то проге встречал такое, что содержимое сохраняется полнотью, т.е. в файле хранится полностью текст и когда отменяешь действие - просто считывается нужный кусочек файла и прописывается в текстовое поле, то же самое и с повтором, а когда сохраняешь документ, тот файл затирается.
Всё гениальное - просто!
Air вне форума Ответить с цитированием
Старый 08.03.2008, 20:11   #10
makarov.y
 
Регистрация: 08.03.2008
Сообщений: 5
По умолчанию

А не легче ли так : Memo1(или что там у тебя).Undo; Эффект такой же что
и у клавиш Ctrl + Z.
makarov.y вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц



Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Настройка редактора кода Hottabych Общие вопросы Delphi 5 29.05.2008 21:02
Где скачать исходник среднего текстового редактора (типа WordPad) с подробным описанием всех функций. Bill Gates Софт 2 07.01.2008 07:39
Нужен Исходник текстового редактора на паскале deadh5n1 Помощь студентам 1 19.12.2007 12:58
создание графического редактора в Delphi? parano_ya Помощь студентам 1 29.04.2007 08:17