怎样正确检测文件是否修改?(10分)

  • 主题发起人 主题发起人 SmallMice2
  • 开始时间 开始时间
S

SmallMice2

Unregistered / Unconfirmed
GUEST, unregistred user!
各位高手:
  我想编一个“文字处理程序”,有“新建文件”和“打开文件”等功能,在编写“关闭窗口”时,需要检测通过OpenDialog1组件打开的文件是否已修改,从而询问是否需要保存?
  “新建文件”的关闭操作我已完成。
  但我不知该怎样才能正确检测文件是否已修改,望各位高手帮我。
                   谢谢!
                   SmallMice
2003年08月30日
 
试试检查CRC,如果和刚打开时一样,就是没有修改.
 
一般文件编辑器不是和原文件比较是否改变,而是检查比如用Memo吧,当Memo.OnChange事件发生后,说明它里面的内容改变了,这时就需要保存,否则不需要保存
 
不过如果想查出是否又改回去了,用onchange就不行了.
 
CRC是什么?
Memo.OnChange需要编写什么代码?
 
CRC32或CRC16

CRC就是循环冗余代码的简写.

比如设一个变量needsave:boolean指示是否需要存盘,在onchange里就写
needsave:=true;

然后在存盘函数里
if needsave then
begin
执行存盘语句
end
 
能不能比较文件修改时间
 
那只能检查是否别的程序修改了文件
 
firstrose老兄:
  你能不能把具体方法写出来,因为我好笨(不好意思)。最好是能将保存Memo和Richedit的代码写在一段代码里。因为我编的是MDI,建立了三个子窗体分别包含Image、Memo和Richedit组件,我想执行“打开”操作时,如打开的是包含Image的窗体,那么直接关闭(因为我没有编写对图片文件的编辑代码);如果打开的是包含Memo或Richedit的窗体,才检测是否修改和是否需要保存。可以吗?
 
firstrose老兄:
  能不能再将“循环冗余代码”解释一下?我还是不太明白。
  另外,如果不能将保存Memo和Richedit的代码写在一段代码里,只要你有好的方法也请你发给我,好吗?
 
CRC可以在网上搜索的。

memo.lines.savetofile('test');
 
firstrose老兄:
  我用Google搜索CRC怎么全是英文?难道没有中文介绍吗?你有没有?
 
ft,你点那个"搜索简体中文网页"啦

http://www.luocong.com/articles/index.asp
 
Memo1.Modified(?)好像是这个名字
改回去也是改了 除非是只做了一步并且撤销了 或者多部操作全部撤销
CRC太夸张了吧
 

Similar threads

回复
0
查看
1K
不得闲
D
回复
0
查看
867
DelphiTeacher的专栏
D
D
回复
0
查看
836
DelphiTeacher的专栏
D
D
回复
0
查看
785
DelphiTeacher的专栏
D
后退
顶部