知识大全 文件管理(二)[1]
Posted 编辑
篇首语:丈夫欲遂平生志,一载寒窗一举汤。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 文件管理(二)[1]相关的知识,希望对你有一定的参考价值。
DELPHI基础教程:文件管理(二)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!
记录的删除 插入 排序
删除一条记录的基本思路是 获取当前记录的位置并把该位置后的记录逐个向前移动 文件在最后一条记录前截断
for i:=CurrentRec+ to Count do
begin
seek(MethodFile i)
read(MethodFile MethodRec)
seek(MethodFile i )
Write(MethodFile MethodRec)
end;
Truncate(MethodFile)
为避免误删除 在进行删除操作前弹出一个消息框进行确认 删除后要更新全局变量的值和显示内容
Count := Count ;
ChangeGrid;
完整的程序如下
procedure TRecFileForm DeleteButtonClick(Sender: TObject)
var
NewFile: MethodFileType;
MethodRec: TMethod;
NewFileName: String;
i: Integer;
begin
if FileOpened = False then Exit;
CurrentRec := StringGrid Row ;
if CurrentRec < then Exit;
if MessageDlg( Delete Current Record ? mtConfirmation
[mbYes mbNo] ) = idYes then
begin
HazAttr text := ;
for I := CurrentRec+ to Count do
begin
seek(MethodFile i)
read(MethodFile MethodRec)
seek(MethodFile i )
Write(MethodFile MethodRec)
end;
Truncate(MethodFile)
Count := Count ;
ChangeGrid;
end;
end;
这里所显示的删除操作简单明了 但在程序开始设计时我却走了一条弯路 后来发现虽然这种方法用于记录的删除操作显得笨拙 可笑 但却恰恰是记录插入 排序的思想
这种思想的核心是创建一个新文件保存更新后的内容 若新文件顺利创建 则删除原文件 否则恢复原来的文件 程序清单如下
procedure TRecFileForm DeleteButtonClick(Sender: TObject)
var
NewFile: MethodFileType;
MethodRec: TMethod;
NewFileName: String;
i: Integer;
begin
if FileOpened = False then Exit;
CurrentRec := StringGrid Row ;
if CurrentRec < then Exit;
if MessageDlg( Delete Current Record ? mtConfirmation
[mbYes mbNo] ) = 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 := to Count do
if I <> CurrentRec+ 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 ;
ChangeGrid;
end;
end;
对于记录插入 方法基本同上 对于排序 可先将关键域读入排序 而后再按排序结果对应的记录号顺序重写文件
结果综合
对不同方法的评估结果 可按一定的公式进行综合 当用户按下 计算 按钮时 系统进行计算并把综合结果写入HazAttr只读编辑框中
为保证结果显示的正确性 每次增加 修改 删除操作确认后HazAttr编辑框清空
编辑对话框的输入检查
当用户单击 增加 或 修改 按钮时系统将弹出一个编辑对话框 让用户输入或修改记录内容 其中的三个编辑框 一个组合列表框分别对应TMethod 的四个域 由于TMethod的Result域必须是[ ]间的小数 因此当用户按OK键关闭对话框时应进行类型和范围检查
在VB中我做过同样的工作 那时需要对用户输入的键码逐个进行判断 但这种方法很繁琐 很难做圆满(如不能很好地支持编辑键) 而Object Pascal提供了更好的方法 这种方法的关键就在于它的类型转换函数Val:
procedure Val(Str: String;var V; var Code: Integer)
V是由Str转换成的整型或实型数 若字符串非法 则出错位置返至Code;否则置Code为 字符串非法并不会引发一个转换异常
如果转换后的数超出了我们的范围 则显式把Code置为 最后统一通过检测Code是否为 来判断输入是否合法
我们把输入检查放在对话框的OnCloseQuery事件处理过程中 如输入非法 则禁止对话框关闭 并将输入焦点置于Result编辑框中 但假如用户按了Cancel按钮 则这种检查是多余的 为此定义一个布尔变量IsCancel 对话框生成时置为False 假如用户按下Cancel 则置为True 此时OnCloseQuery事件不进行输入检查
cha138/Article/program/Delphi/201311/25236相关参考
DELPHI基础教程:文件管理(二)[3] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 函数N
DELPHI基础教程:文件管理(二)[2] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 对话框
管理和维护ORACLE控制文件 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 控制文件是一个二进
DELPHI基础教程:文件管理(一)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 文件是
DELPHI基础教程:文件管理(三)[1] 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 画出每
文件-索引顺序文件-VSAM文件(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! VSAM文
文件-索引顺序文件-ISAM文件(二) 以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! ISAM文
在Oracle系统中用户使用特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle有两种身份验证方法 使用与操作系统集成的身份验证 使用Oracle数据库的密码文件进行
文件的逻辑结构及操作 文件的逻辑结构 文件可看成是以记录为数据元素的一种线性结构 文件上的操作主要有两类检索和维护 ()检索 检索即在文件中查找满足给定条件的记录它既可以按记录的逻辑号(
索引文件的操作 检索操作 检索分两步进行 ①将外存上含有索引区的页块送人内存查找所需记录的物理地址 ②将含有该记录的页块送人内存 注意 ①索引表不大时索引表可一次读入内存在索引文件中检