undo
-
Wir haben ne Ausschreibung, in der der Kunde ein Undo haben möchte.
Wenn wir jetzt überlegen kommen uns zwar ein paar Gedanken, aber trivial scheint sowas ja nicht zu sein. Unser Programm hat halt ne Datenhaltung in zig Objekten die diverse Beziehungen untereinander haben.
Naja, habt Ihr vielleicht ein paar Links zu dem Thema, wie man sowas grunsätzlich angeht?
-
Ich GoF-Buch Design-Patterns ist da glaub ich was zu drin. So weit ich mich erinnere schlagen sie vor jede Aktion als Klasse zu kapseln, die die nötigen Informationen hat um ihre Operation auszuführen und wieder zurückzunehmen. Daraus kannst Du Dir dann eine Liste bauen in der Du vorwärts bzw. rückwärts wandern kannst. Ich hatte sowas mal mit Java implementiert und das funktionierte eigentlich auch ganz gut. Der Datenoverhead ist halt möglicherweise immens. Aber das hängt erstens vom konkreten Fall ab und zweitens kann man da nicht wirklich was dran tun.
-
man könnte sich da einiges Vorstellen. Kommt aber drauf an, wie kompliziert Eure Konstrukte sind. Sind die Objekte Klassen und/oder Datensätze einer Datenbank?
Eine Undo-Funktion für einen reinen Texteditor ist ja beispielsweise relativ simpel. Man muß nur in der Lage sein, ein Protokoll über die zuletzt gemachten Änderungen zu führen (Tastendrücke). Wenn ich Undo machen will, muß ich jeden Tastendruck in sein Gegenteil verkehren (aus <CR rechts> wird <CR links> etc.). Natürlich sollte die Datenhaltung darauf ausgelegt sein.Mann könnte sich bei komplizierten Beziehungen auch vorstellen, zu einem bestimmten Zeitpunkt alle Daten sichern zu lassen und diese dann wieder zurückzuschreiben. Bei Klassen könnte hier ggf. auch "friend" helfen.... Kommt halt echt drauf an, was ihr da so macht.
Grundsätzlich sollte aber Undo möglichst schon zu Beginn in das Design einfließen. Später ist sowas immer aufwändiger.
-
JFK schrieb:
Eine Undo-Funktion für einen reinen Texteditor ist ja beispielsweise relativ simpel. Man muß nur in der Lage sein, ein Protokoll über die zuletzt gemachten Änderungen zu führen (Tastendrücke). Wenn ich Undo machen will, muß ich jeden Tastendruck in sein Gegenteil verkehren (aus <CR rechts> wird <CR links> etc.). Natürlich sollte die Datenhaltung darauf ausgelegt sein.
Ganz so einfach isses leider nicht. Mit der Standardbelegung unter Windows: Strg+A Entf. Offensichtlich reicht es nicht aus, diese beiden Tastendrücke zu speichern
-
naja. Für den Ein/Aus-Schalter am PC gibts auch keine Undofunktion. Auch ein Pilot eines Jagdflugzeugs sucht eine Undofunktion für Raketen-/Bombenabwürfe und selbst für den Schleudersitz vergebens.... Im Politikbereich wäre Undo oftmals extrem wünschenswert. Selbst im Privatbereich würde das extremen Sinn machen. Gleichwohl scheint die Natur solche Wünsche nicht für sinnvoll erachtet zu haben, sonst hätten wir sowas vielleicht
-
Vielleicht hätte ich dazusagen sollen, dass für sowas selbstverständlich Undo-Funktionen existieren.
-
für <Strg>+<Alt>+<Entf> in einem normalen Anwendungsprogramm? Eher ungewöhnlich. Klar, wäre das technisch möglich, aber wer braucht denn sowas!?
-
Wer redet von Strg+Alt+Entf?
-
Hm, JFK liest wohl ein "lt" wo keins ist
.
-
ach sorry, du meintest <Strg>+<A> und danach <Entf>. Hab ich wirklich falsch gelesen. Ist schon richtig, dafür gibt es kein Gegenstück. Diese Funktion müßte man halt neu implementieren und die Daten, die man wegschmeißt, müssen irgendwo gepuffert werden. Aber was ist daran so außergewöhnlich schwierig dran? Ist halt nur aufwändig. Deshalb konnten viele ältere Programme auch bestimmte Schritte nie rückgängig machen. Ist halt wie gesagt auch schwierig, sowas im Nachhinein mühsam überall einzubauen. Deshalb sollte man an die Sache von Anfang an beim Design denken...
-
Die dreckigste Methode wäre, den ganzen Text zu puffern. Das wäre dann aber nur für EINEN Undo-Vorgang geeignet.