🚀 go-pugleaf

RetroBBS NetNews Server

Inspired by RockSolid Light RIP Retro Guy

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

Re: Undo/Redo

#345539
From: zpksoft
Date: Fri, 13 Jan 2017 21:59
52 lines
3768 bytes
W dniu piątek, 13 stycznia 2017 19:04:08 UTC+1 użytkownik JS napisał:
> W dniu 2017-01-12 o 21:53, J-23 pisze:
> > W dniu 12.01.2017 o 18:17, Roman Tyczka pisze:
> >> On Thu, 12 Jan 2017 07:57:14 -0800 (PST), zpksoft wrote:
> >>
> >>> Poza tym pytający nie pisał o organizacji kodu tylko pytał
> >>> o pomysł realizacji undo-redo na bazie danych.
> >>
> >> Ani słowa nie ma o bazie danych, co palisz, że masz takie omamy?
> >>
> >
> > Są słowa o tablicach i danych:
> >
> > cytuje : "Poradźcie jak zrobić funkcję Undo/Redo w programie, który
> > operuje na kilkunastu (całkiem niemałych) tablicach rekordów?"
> >
> > Można wysnuć wniosek, że chodzi o tabele w bazie danych (Na upartego też
> > można przykleić że mogą być to rekordy w pamięci) ale autor idze na
> > skróty myślowe bo zastanawia się "jak zapisać poszczególne kroki w bazie
> > danych" a nie jak "zorganizować strukturę pozwalającą zapisać do bazy
> > danych." a problem przywracania to tak naprawdę jest problemem
> > organizacji zapisu poszczególnych kroków
> >
> > Nie ma moim zdaniem co wymyślać koła na nowo i szukać rozwiązań
> > partyzanckich. No chyba że w kodzie jest brak jakiejkolwiek organizacji
> > wtedy operacja "Undo/Redo" będzie wyglądała na karkołomną.
> >
> > Pozdrawiam
> > J-23
> Nie robię żadnej bazy danych, jest po prostu kilkanaście tablic:
> aaa: array [1..xxxx] of "jakiś tam rekord";
> 
> Na razie rzeźbię dodatkowe tablice z historią, ale myślałem, że jest 
> jakiś sprytniejszy sposób.
> W każdym razie dzięki za porady.
> 
> Pozdrawiam
> JS

Myślałem, że to baza danych :)
U mnie w bazach odpowiednie triggery załatwiają kwestię historii.

Dla Twojego przypadku utworzył bym listę zawierającą elementy. Każdy z nich byłby rekordem złożonym z:
- nazwy tablicy którego dotyczy wpis
- numeru rekordu tablicy
- bloba (paczki binarnej zawierającej historyczną zawartość rekordu tablicy)

I teraz wystarczy poruszanie się po tej liście.

W bazie danych mają sens tablice historyczne, tutaj myślę, że takie rozwiązanie będzie właściwsze.

Paweł
Technical Details
Message-ID: <4904aef7-6114-41c7-9b01-2897cb62af20@googlegroups.com>
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!nntp.giganews.com!i7no598055qta.1!news-out.google.com!78ni2791itm.0!nntp.google.com!r185no959776ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
References: <o55p4k$3kj$1@node1.news.atman.pl> <8795c6df-e079-4b62-8285-cb2a858597ab@googlegroups.com> <587791cd$0$658$65785112@news.neostrada.pl> <75f40add-7cbd-4249-897f-8d115407a75b@googlegroups.com> <4cwg94fh2bdy.dlg@tyczka.com> <5877ecb2$0$5146$65785112@news.neostrada.pl> <o5b4qn$ehf$1@node2.news.atman.pl>

Show Full Headers
Complete Article Headers
X-Received: by 10.129.57.84 with SMTP id g81mr7049323ywa.127.1484344797546;        Fri, 13 Jan 2017 13:59:57 -0800 (PST)
X-Received: by 10.157.4.105 with SMTP id 96mr829243otc.17.1484344797504; Fri, 13 Jan 2017 13:59:57 -0800 (PST)
Path: mbox-mo1.pugleaf.net!news-archive.icm.edu.pl!news.icm.edu.pl!news.nask.pl!news.nask.org.pl!news.unit0.net!weretis.net!feeder6.news.weretis.net!feeder.usenetexpress.com!feeder1.iad1.usenetexpress.com!216.166.98.84.MISMATCH!border1.nntp.dca1.giganews.com!nntp.giganews.com!i7no598055qta.1!news-out.google.com!78ni2791itm.0!nntp.google.com!r185no959776ita.0!postnews.google.com!glegroupsg2000goo.googlegroups.com!not-for-mail
Newsgroups: pl.comp.lang.delphi
Date: Fri, 13 Jan 2017 13:59:57 -0800 (PST)
In-Reply-To: <o5b4qn$ehf$1@node2.news.atman.pl>
Complaints-To: groups-abuse@google.com
Injection-Info: glegroupsg2000goo.googlegroups.com; posting-host=83.27.194.72; posting-account=8ND_mgoAAAD5J9y9fnaTB1Kcu7xKWk7Q
NNTP-Posting-Host: 83.27.194.72
References: <o55p4k$3kj$1@node1.news.atman.pl> <8795c6df-e079-4b62-8285-cb2a858597ab@googlegroups.com> <587791cd$0$658$65785112@news.neostrada.pl> <75f40add-7cbd-4249-897f-8d115407a75b@googlegroups.com> <4cwg94fh2bdy.dlg@tyczka.com> <5877ecb2$0$5146$65785112@news.neostrada.pl> <o5b4qn$ehf$1@node2.news.atman.pl>
User-Agent: G2/1.0
MIME-Version: 1.0
Message-ID: <4904aef7-6114-41c7-9b01-2897cb62af20@googlegroups.com>
Subject: Re: Undo/Redo
From: zpksoft <zpksoft@op.pl>
Injection-Date: Fri, 13 Jan 2017 21:59:57 +0000
Lines: 69
Content-Type: text/plain; charset=UTF-8
Content-Transfer-Encoding: 8bit