知识大全 文件管理(二)[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

相关参考

知识大全 文件管理(二)[3]

DELPHI基础教程:文件管理(二)[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  函数N

知识大全 文件管理(二)[2]

DELPHI基础教程:文件管理(二)[2]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  对话框

知识大全 管理和维护ORACLE控制文件

管理和维护ORACLE控制文件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  控制文件是一个二进

知识大全 文件管理(一)[1]

DELPHI基础教程:文件管理(一)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  文件是

知识大全 文件管理(三)[1]

DELPHI基础教程:文件管理(三)[1]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  画出每

知识大全 文件 - 索引顺序文件 - VSAM文件 (二)

文件-索引顺序文件-VSAM文件(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  VSAM文

知识大全 文件 - 索引顺序文件 - ISAM文件(二)

文件-索引顺序文件-ISAM文件(二)  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  ISAM文

知识大全 管理好密码文件对执行数据库管理的重要性[1]

  在Oracle系统中用户使用特权用户身份(INTERNAL/SYSDBA/SYSOPER)登录Oracle有两种身份验证方法  使用与操作系统集成的身份验证  使用Oracle数据库的密码文件进行

知识大全 文件 - 文件的基本概念(二)

  文件的逻辑结构及操作  文件的逻辑结构  文件可看成是以记录为数据元素的一种线性结构  文件上的操作主要有两类检索和维护  ()检索  检索即在文件中查找满足给定条件的记录它既可以按记录的逻辑号(

知识大全 文件 - 索引文件(二)

  索引文件的操作  检索操作  检索分两步进行  ①将外存上含有索引区的页块送人内存查找所需记录的物理地址  ②将含有该记录的页块送人内存  注意  ①索引表不大时索引表可一次读入内存在索引文件中检