标题:yu版 再探讨一个话题 关于无限次撤销的问题(或者有限次)
只看楼主
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
结帖率:99.76%
已结贴  问题点数:20 回复次数:4 
yu版 再探讨一个话题 关于无限次撤销的问题(或者有限次)
关于文本编辑框  的恢复上一次操作   (估计很少有编辑器能够实现无限次恢复上一次操作的吧)

这个是咋实现的  是放在文件中呢 还是放在数组里呢 还是注册表呢   没做过这个东东  不知道咋下手
搜索更多相关主题的帖子: 编辑器 注册表 
2013-08-15 13:15
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:20 
你是指Ctrl+Z事件吧?

不知道标准的做法是怎么样,不过可以看一下人家的开源软件,好像notepad++是开源的,把他的源代码拖下来慢慢参考就是。

我直接的想法是:做个内存链表(当然文件也可以)来保存每个操作之后的变化量;由于要实现Ctrl+Z (撤销)和Ctrl+y(恢复撤销),所以就用双向链表咯。
比如
link_head--> item[+XXXX]<-->item[-XXXXX]<->item[+XXXX]<-->item[+XXXX] <——link_tail

                                                            

在用一个Current_item 时刻指向链表的尾部,当相应Ctrl+Z或者Ctrl+Y的时候,用Current——item来浮动读取链表的状态咯。


实现细节上,可以还得考虑很多数据结构和算法问题,哈哈,这些是万版的工作了

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 14:12
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
哦,可能还是用数据来保存好点,用一个下标志来浮动就行。数据实现比链表简单点。

放注册表就不用了,麻烦。

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 14:14
wp231957
Rank: 16Rank: 16Rank: 16Rank: 16
来 自:神界
等 级:版主
威 望:422
帖 子:13681
专家分:53296
注 册:2012-10-18
得分:0 
唉  还是要用到链表  我对c中链表和双向链表  都是从未涉猎  遇到链表就躲  有多远躲多远

DO IT YOURSELF !
2013-08-15 14:22
yuccn
Rank: 20Rank: 20Rank: 20Rank: 20Rank: 20
来 自:何方
等 级:版主
威 望:167
帖 子:6809
专家分:42393
注 册:2010-12-16
得分:0 
3楼打错了个词:数据-》数组。

“可能还是用数组来保存好点,用一个下标志来浮动就行。数组实现比链表简单点”


用多了就熟练了,刚刚工作那年,我们公司规定不用或者少用stl库。
那时候碰到不少东西都是自己写链表,写队列,树什么的。 碰多了就严谨点了

我行我乐
我的博客:
http://blog.yuccn. net
2013-08-15 14:36



参与讨论请移步原网站贴子:https://bbs.bccn.net/thread-419148-1-1.html




关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.083340 second(s), 8 queries.
Copyright©2004-2025, BCCN.NET, All Rights Reserved