🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

Article View: pl.comp.lang.delphi
Article #345532

Re: Undo/Redo

#345532
From: Sebastian Biały
Date: Wed, 11 Jan 2017 19:32
22 lines
1646 bytes
On 2017-01-11 18:13, JS wrote:
> Poradźcie jak zrobić funkcję Undo/Redo w programie, który operuje na
> kilkunastu (całkiem niemałych) tablicach rekordów?

a) owrapować je obiektowo

b) metody modyfikujące niczego nie zmieniają, ale tworzą mapę *wyjątków*

c) metody czytające w pierwszej kolejności widzą mapę wyjątków

d) jesli mapa jest dośc duża lub zaistnieje inna potrzeba wyjątki sa 
przepisywane do kopii struktury (można to zrobić w tle).

e) warto zainteresować sie pojeciem pamięci transakcyjnej (zrealizowanej 
softwareowo, jak w Clojure)

f) zastanowić sie nad wielopozomowymi wyjątkami (lista map) co ułatwia 
cofanie o wiele poziomów

> Jakiś sprytny pomysł?

Zależy od problemu i od spodziewanej wydajności *czytania*.
Technical Details
Message-ID: <o561ad$hov$1@node2.news.atman.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
References: <o55p4k$3kj$1@node1.news.atman.pl>

Show Full Headers
Complete Article Headers
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!.POSTED!not-for-mail
From: Sebastian Biały <heby@poczta.onet.pl>
Newsgroups: pl.comp.lang.delphi
Subject: Re: Undo/Redo
Date: Wed, 11 Jan 2017 20:32:25 +0100
Organization: ATMAN - ATM S.A.
Lines: 23
Message-ID: <o561ad$hov$1@node2.news.atman.pl>
References: <o55p4k$3kj$1@node1.news.atman.pl>
NNTP-Posting-Host: 176.115.85.233
Mime-Version: 1.0
X-Trace: node2.news.atman.pl 1484163213 18207 176.115.85.233 (11 Jan 2017 19:33:33 GMT)
X-Complaints-To: usenet@atman.pl
NNTP-Posting-Date: Wed, 11 Jan 2017 19:33:33 +0000 (UTC)
User-Agent: Mozilla/5.0 (Windows NT 6.0; WOW64; rv:45.0) Gecko/20100101 Thunderbird/45.6.0
In-Reply-To: <o55p4k$3kj$1@node1.news.atman.pl>
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit