Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Потрепаться";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Вниз

Откат последних действий (редактор)   Найти похожие ветки 

 
Zergling   (2003-08-25 09:48) [0]

День добрый, Всем проходящим! Создается редактор. По какому принципу создается откат изменений, как например в ворде: добавление/перемещение/удаление/редактирование свойств объекта и т.п. Т.е я незнаю, что мне взять за основу и от чего отталкиваться. Для начала пока хватило бы отменять добавление/удаление объекта и изменения его место положения. Если кто работал в этом направлениии посоветуйте чего нибудь. Приму все: ссылки на статьи, советы, алгоритмы. Всем откликнувшимся заранее БЛАГОДАРСТВУЮ!


 
Dmitriy O.   (2003-08-25 09:59) [1]

Круто текстовой редактор конкурент ворду ! Можеш глянуть на сайте Подгорецкого там он создал нечто подобное с исходниками. А на счет отката может дубль листа при действии и замена документа дублем при откате.


 
Zergling   (2003-08-25 10:38) [2]

Dmitriy O. © (25.08.03 09:59) [1]

У меня не текстовый редактор. Ну например не ворд, а как к примеру Visio. Работа будет вестить с различными объектами.


 
Zergling   (2003-08-25 10:50) [3]

>> А на счет отката может дубль листа при действии и
>> замена документа дублем при откате.

Если много объектов, то памяти наверно много отхавает.


 
Е-Моё имя   (2003-08-25 10:56) [4]


> Zergling © (25.08.03 10:50) [3]

несомненно;)))


 
Dmitriy O.   (2003-08-25 11:12) [5]

Тогда веди протокол действий Юзера и по нему производи откат.


 
Zergling   (2003-08-25 12:05) [6]

>> Тогда веди протокол действий Юзера ...
Так, что взять за основу, с чего начать. Я не знаю что лучше взять за основу и по какому принципу это начать реализовывать.


 
Zergling   (2003-08-26 09:17) [7]

Неужели больше ни чего не посоветуете?


 
Zergling   (2003-08-26 11:13) [8]

Кому интересно. Посоветовали на другом форуме:
http://ooad.asf.ru/patterns/patterninfo.asp?id=26


 
[lamer]Barmaglot   (2003-08-26 11:15) [9]

Ну что сложного? Передвинул User объект А на 20 пикселей вправо. Ты перемешаешь его и записываешь старые координаты объекта в файл. при откате читаешь из файла и перемещаешь обект на прежнее место...


 
Calm   (2003-08-26 11:56) [10]


> Ну что сложного?

А то, что у объектов есть не только геометрические свойства, а свойства самого разного назначения. Хочется работать со всеми одинакого! А еще есть создания объектов, удаления. Внесения в различные списки и т.д.


 
Zergling   (2003-08-26 12:05) [11]

Calm © (26.08.03 11:56) [10]

Вот именно это я и хочу!!!


 
KSergey   (2003-08-26 12:19) [12]

[10] Calm © (26.08.03 11:56)
А то, что у объектов есть не только геометрические свойства, а свойства самого разного назначения. Хочется работать со всеми одинакого! А еще есть создания объектов, удаления. Внесения в различные списки и т.д.


Опять же вопрос: и что? Кто мешает работать одинаково?
Вот и по приведенной ссылке - какие тут откровения? Понятно, что каждый объект сам должне решать какую информацию ему сохранять для того, чтобы потом самому же (!) по ней восстановить свое состояние. Надо ему лишь предоставиьт такое хранилище.
На счет создания/уничтожения объектов - ну видимо создавать через какой-то собственный общий менеджер, который зафиксирует что создано и (вызовом соотв. методов созданного объекта) заставит его сохранить свое состояние. То же и с удалением: сохранить состояние и уничтожить, о чем записать в хранилище.

А формат хранилища - придется придумывать самому.


 
pasha_golub   (2003-08-26 12:28) [13]

Дык, правильно есть и разные геом. свойства. опиши, к примеру такой журнал

Obj[23].Width=50
Obj[23].Screw=-23
Obj[23].MoveTo(10,10)
CreateObject(TRectangle(50,50,75,75),Black,Green)

Поясняю, сначала изменили ширину, потом развернули, потом переместили, потом создали, ну а в своем редакторе разбирай и выполняй


 
Zergling   (2003-08-27 09:54) [14]

pasha_golub © (26.08.03 12:28) [13]

Как у вас все просто. И как определить какие properety изменились объекта?


 
Calm   (2003-08-27 11:39) [15]


> KSergey © (26.08.03 12:19) [12]

Да не вам указывал на трудности.
Ссылочка полезная в плане общих идей. Я делал приблизительно так, но и принципиальные отличия были.

2 Zergling © (27.08.03 09:54) [14]
Я у себя реализовал систему отката.
Но у меня все объекты, которые могут откатываться наследуются от нужного базового класса. И вообще много каких ограничений. Ограничений не смысле ограниченных возможностей отката или приложения, а в смысле идеологии приложения.

2pasha_golub © (26.08.03 12:28) [13]
IMHO, ты не занимался такой проблемой и недооцениваешь сложность задачи.


 
Dmitriy O.   (2003-08-27 11:53) [16]

IMHO дубль рабочих листов самый надежный и простой метод.


 
Calm   (2003-08-27 11:55) [17]


> IMHO дубль рабочих листов самый надежный и простой метод.

По приведенной ссылке описан намного более общий подход.
Хотя и более сложный в реализации.

Ну а надежность всецело зависит от рук программистов, программы которых запущены на компе.


 
Zergling   (2003-08-27 12:18) [18]

Dmitriy O. © (27.08.03 11:53) [16]

А если мне надо 100 откатов, то по сути хранить 100 копий проекта. Неее. Глупо однако. Если бы фотошоп работал по такому принципу, у тебя бы своп вылез из системного блока и задушил бы тебя!


 
Dmitriy O.   (2003-08-27 13:01) [19]

Zergling © (27.08.03 12:18) :)) Я не знаю что за проект и какие файлы. Но можно дублировать токо рабочею область при необходимость хранить громадное число откатов-от начала проекта до конца в опер памяти хранить ограниченное число остальные в архиве или сохранять на диске т.е. это приведет токо к некоторуму замедлению отката зато их можно сделать хоть милльон.


 
iZEN   (2003-08-27 22:46) [20]

Используйте паттерны проектирования Command и Memento. Первый будет отвечать за исполнение/отмену, второй - за хранение промежуточных состояний.


 
Zergling   (2003-08-28 10:01) [21]

iZEN © (27.08.03 22:46) [20]

Это ты вывод сделал из прочитанной статьи приведенной выше?
Это я и сам прочитал.


 
iZEN   (2003-08-28 22:24) [22]

Zergling © (28.08.03 10:01) [21]

Прошу прощения.
ПРОСТО НЕ ЧИТАЛ ПРЕДЫДУЩИЕ СООБЩЕНИЯ - хотелось побыстрее помочь человеку. :)



Страницы: 1 вся ветка

Форум: "Потрепаться";
Текущий архив: 2003.09.15;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.5 MB
Время: 0.019 c
1-48490
Cherny Ivan
2003-09-04 16:51
2003.09.15
Filer.DefineBinaryProperty, и вытекающие последствия


14-48706
Aga
2003-08-28 13:03
2003.09.15
RxRichEdit


14-48726
Pindos
2003-08-26 21:26
2003.09.15
Пираты


14-48697
Всеволод Соловьёв
2003-08-24 00:21
2003.09.15
---|Ветка была без названия|---


1-48527
mfender
2003-09-02 13:01
2003.09.15
Время по Гринвичу





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский