文件管理(二)
6.2.7 记录的删除、插入、排序
删除一条记录的基本思路是:获取当前记录的位置并把该位置后的记录逐个向前移动。 文件在最后一条记录前截断。
for i:=CurrentRec+1 to Count-1 do
begin
seek(MethodFile,i);
read(MethodFile,MethodRec);
seek(MethodFile,i-1);
Write(MethodFile,MethodRec);
end;
Truncate(MethodFile);
为避免误删除,在进行删除操作前弹出一个消息框进行确认。删除后要更新全局变量的值和显示内容:
Count := Count - 1;
ChangeGrid;
完整的程序如下:
procedure TRecFileForm.DeleteButtonClick(Sender: TObject);
var
NewFile: MethodFileType;
MethodRec: TMethod;
NewFileName: String;
i: Integer;
begin
if FileOpened = False then Exit;
CurrentRec := StringGrid1.Row-1;
if CurrentRec < 0 then Exit;
if MessageDlg('Delete Current Record ?', mtConfirmation,
[mbYes, mbNo], 0) = idYes then
begin
HazAttr.text := '';
for I := CurrentRec+1 to Count-1 do
begin
seek(MethodFile,i);
read(MethodFile,MethodRec);
seek(MethodFile,i-1);
Write(MethodFile,MethodRec);
end;
Truncate(MethodFile);
Count := Count-1;
ChangeGrid;
end;
end;
这里所显示的删除操作简单明了。但在程序开始设计时我却走了一条弯路,后来发现虽然这种方法用于记录的删除操作显得笨拙、可笑,但却恰恰是记录插入、排序的思想。
这种思想的核心是创建一个新文件保存更新后的内容。若新文件顺利创建,则删除原文件,否则恢复原来的文件。程序清单如下:
procedure TRecFileForm.DeleteButtonClick(Sender: TObject);
var
NewFile: MethodFileType;
MethodRec: TMethod;
NewFileName: String;
i: Integer;
begin
if FileOpened = False then Exit;
CurrentRec := StringGrid1.Row-1;
if CurrentRec < 0 then Exit;
if MessageDlg('Delete Current Record ?', mtConfirmation,
[mbYes, mbNo], 0) = idYes then
begin
HazAttr.text := '';
NewFileName := ChangeFileExt(FileName,'.sav');
try
AssignFile(NewFile,FileName);
ReWrite(NewFile);
Except
On EInOutError do
begin
Rename(MethodFile,FileName);
Exit;
end;
end;
for i := 1 to Count do
if I <> CurrentRec+1 then
begin
MethodRec := GridToRec(i);
Write(NewFile,MethodRec);
end;
closeFile(MethodFile);
try
AssignFile(MethodFile,Filename);
Reset(MethodFile);
except
on EInOutError do
begin
DeleteFile(FileName);
AssignFile(MethodFile,NewFileName);
Reset(MethodFile);
Rename(MethodFile,FileName);
Exit;
end;
DeleteFile(NewFileName);
Count:=Count-1;
ChangeGrid;
end;
end;
对于记录插入,方法基本同上。对于排序,可先将关键域读入排序,而后再按排序结果对应的记录号顺序重写文件。
6.2.8 结果综合
对不同
第六章 文件管理 6.1 文件和文件系统 6.2 文件的逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理 6.6 文件共享与文件保护 6.7 数据...
第六章 文件管理2 暂无评价0人阅读0次下载举报文档文件管理 ? ? ? ? ? ? 概述 文件的结构和存取方式 文件目录 文件...
第六章++文件管理2 隐藏>> 第六章 文件管理 文件管理的功能 ? 文件的按名存取 ? 实现文件的共享、保护和保密 ? 文件目录的建立与维护 ? 逻辑文件到物理文件...
第六章 文件管理2 操作系统课件 汤子瀛操作系统课件 汤子瀛隐藏>> 第六章 文件管理 张旭 主讲 zhangxu@zzuli.edu.cn 6.1.1 文件及其分类 1.文件的定义 文件...
第六章 文件管理2 操作系统课件操作系统课件隐藏>> 第六章 文件管理 文件管理的功能文件的按名存取 实现文件的共享、保护和保密 文件目录的建立与维护 逻辑文件到...
操作系统 第六章 文件管理 6.1 文件系统的概念 6.2 文件的逻辑组织与存取方法 6.3 文件的物理结构与存储设备 6.4 文件存储空间的管理第 六章文件管理 6.5...
6.1.3 文件操作★创建文件 ★删除文件★读文件 ★写文件 ★截断文件 ★设置文件的读/写位置 计算机操作系统第六章 文件管理 6.2 文件的逻辑结构两种形式的...
第六章 文件管理 6.1 文件和文件系统 6.2文件逻辑结构 6.3 外存分配方式 6.4 目录管理 6.5 文件存储空间的管理 6.6 文件共享和保护 6.7 数据一致性...

我要评论