Pregunta

Estoy escribiendo una aplicación de escritorio que ver dibujo vectorial en C ++, y teniendo en cuenta el uso de SQLite para respaldar mi función de deshacer / rehacer.

alguien ha utilizado SQLite para deshacer / rehacer características? ¿Cómo funciona para usted?

Aclaración:

Yo era consciente del enfoque de pila, incluso he implementado una aplicación con ese enfoque. El problema que encontré fue que se hace difícil mantener después de un tiempo.

Lo que quería decir mediante la utilización de SQLite es que voy a mapear toda mi estructura de datos en memoria en una base de datos SQLite, y dejar que el sqlite hacer el diff y revisión para mí. La velocidad no debe ser un problema si se crea una base de datos en memoria.

Esa fue la idea y me preguntaba si eso podría funcionar.

¿Fue útil?

Solución

Tiene sentido utilizar SQLite para respaldar deshacer / rehacer cuando una base de datos SQLite es el formato de archivo de datos de la aplicación. Ver el sitio web de SQLite para una explicación de cómo hacer esto con disparadores SQLite.

Otros consejos

Básicamente, una función de deshacer / rehacer se puede implementar utilizando una pila: cuando el usuario hace una operación, se presiona sobre la pila de un objeto que representa el delta entre el estado antes y después de la operación, y cuando deshace, que " desenrollar" el delta. Debido a que todas las operaciones que el usuario hace crea un nuevo objeto delta en la pila, podría por que SQLite no es su elección de la tecnología, ya que podría ser demasiado lento. Yo recomendaría teniendo en cuenta la posibilidad de almacenar simplemente la acción de deshacer / rehacer la información en la memoria, y la linealización en el disco sólo si desea guardar realidad de deshacer / rehacer la historia.

Tome un vistazo a Memento patrón de diseño .

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top