🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Undo/Redo

#345534
From: J-23
Date: Thu, 12 Jan 2017 14:25
32 lines
2363 bytes
W dniu 12.01.2017 o 09:44, zpksoft pisze:
> W dniu środa, 11 stycznia 2017 18:13:57 UTC+1 użytkownik JS napisał:
>> Witam
>> Poradźcie jak zrobić funkcję Undo/Redo w programie, który operuje na
>> kilkunastu (całkiem niemałych) tablicach rekordów? Kolejność modyfikacji
>> tablic jest dowolna, a rekordy w poszczególnych tablicach są
>> caaałkowicie różne.
>> Jakiś sprytny pomysł?
>>
>> Pozdrawiam
>> JS
>
> Ja bym zrobił tak: dla każdej tabeli założył bym tabelę z historią.
> Program podczas edycji zapamiętywał by swoją ścieżkę edycji. Undo-redo- poruszanie się po tej ścieżce do tyłu-przodu po to, żeby wiedzieć o jaką tabelę i rekord chodzi.
>
> Dosyć proste.

Tak naprawdę stopień trudności tego zadania zależy od tego jak masz 
zorganizowany kod w tej chwili. Jeżeli masz zrobiony odpowiedni podział 
na modułu/funkcje i ten kod jest "zadbany" to wystarczy zapoznać się z 
zasadą wzorca memento

https://pl.wikipedia.org/wiki/Pami%C4%85tka_(wzorzec_projektowy)

Gorzej kiedy mamy do czynienia ze zjawiskiem zwanym "Spaghetti code"

To jak już to zapiszemy jest sprawą drugorzędną czy to będą "tabele 
historii" czy tabela w bazie danych to nie ma znaczenia w fazie 
projektowania najważniejsza jest organizacja tego co masz do chwili obecnej

Pozdrawiam
J-23
Technical Details
Message-ID: <587791cd$0$658$65785112@news.neostrada.pl>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!newsfeed2.atman.pl!newsfeed.atman.pl!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
References: <o55p4k$3kj$1@node1.news.atman.pl> <8795c6df-e079-4b62-8285-cb2a858597ab@googlegroups.com>

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!goblin1!goblin.stu.neva.ru!newsfeed.neostrada.pl!unt-exc-02.news.neostrada.pl!unt-spo-b-01.news.neostrada.pl!news.neostrada.pl.POSTED!not-for-mail
Subject: Re: Undo/Redo
Newsgroups: pl.comp.lang.delphi
References: <o55p4k$3kj$1@node1.news.atman.pl> <8795c6df-e079-4b62-8285-cb2a858597ab@googlegroups.com>
From: J-23 <Baczeklu@poczta.fm>
Date: Thu, 12 Jan 2017 15:25:17 +0100
User-Agent: Mozilla/5.0 (X11; Linux x86_64; rv:45.0) Gecko/20100101 Thunderbird/45.5.1
MIME-Version: 1.0
In-Reply-To: <8795c6df-e079-4b62-8285-cb2a858597ab@googlegroups.com>
Lines: 32
Message-ID: <587791cd$0$658$65785112@news.neostrada.pl>
Organization: Telekomunikacja Polska
NNTP-Posting-Host: 188.146.76.152.nat.umts.dynamic.t-mobile.pl
X-Trace: 1484231117 unt-rea-b-01.news.neostrada.pl 658 188.146.76.152:54867
X-Complaints-To: abuse@news.neostrada.pl
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit