haitao:
【技术贴】一个具体的技术实现(多级缓冲)相关的问题,需要形式化
[阅读: 1013] 2005-10-24 14:24:23
一个具体的技术实现相关的问题,需要形式化
作了一个类似台历的工具软件,同时显示n周的日历,每个日期占一个框,框里显示该日期的备忘(如果没有备忘就空着)。每天的备忘分4类,如:工作、私事、财务、其他。
由于是单机版小工具程序,每日备忘的信息打算以本文文件存储,为了提高修改的速度,决定把每个月的备忘存为一个名为Note_2005_09.txt的文件
每个文件的内部格式为:
1.0=该月1日的工作记录
1.1=该月1日的私事
1.3=该月1日的其他信息
5.2=该月5日的财务往来记录
依此类推
如果备忘信息有换行回车,则以特别的字符串替换掉后再存储,取出时先把这些特别的字符串替换回回车再使用
编辑每天的备忘时,提供一个4页的Tab和一个Tmemo,选择哪页就等于选择哪一类,自动把当天该类的备忘放在Tmemo里显示并允许用户继续改写,用户一切换Tab,就自动保存当前类的备忘,再把新页对应 的备忘放在Tmemo里显示并允许用户继续改写。
切换日期或终止编辑时,如果都是在同一个月的,可以不把当前对本月其他日期的备忘的修改立即保存,而是在离开本月(选择了其他月份的日期)或程序关闭时,才真正保存到对应的月份文件。
显示台历时,需要显示可见范围内每个日期的备忘信息,这时就需要取对应日期的备忘信息了。如果之前10月20日的备忘被修改过,还没存入文件,显示需要从8月5日开始,则需要先自动保存10月份的备忘信息到对应的文件,然后取8月份的备忘文件(没有就是空)。
由于没有形式化、考虑清楚、周全,程序随着事件的增多,出现了:关闭程序时,一些修改的信息没有保存,保存某些日期的备忘时会丢掉另一些日期的备忘。
如何形式化这个应用?相当于多级缓冲:
每个月一个文件,它可以完整读入内存
每天有4行(类)信息(多行的替换成单行)
用户可以选择具体某一行修改、自动保存(切换类或日期都将导致当前类的信息自动存到内存)
切换月份时,才把内存的修改保存到月份文件。