DELPHI基础教程:文件管理(一)[2]
文件名操作
Rename :文件更名 以文件变量为操作对象
RenameFile :文件更名 参数为文件的原名和新名
ChangeFileExt :改变文件扩展名
ExpandFileName :返回文件全路径名
ExtractFileExt :返回文件扩展名
ExtractFileName :从全路径名中返回文件名
ExtractFilePath :返回特定文件的路径
文件属性
FileGetAttr :返回文件属性
FileSetAttr :设置文件属性
文件状态
FileSize :返回文件对象大小
IOResult :返回上一次I/O操作的状态
FileExists :检测文件是否存在
文件日期
DateTimeToFileDate :把Delphi日期格式转换为DOS日期格式
FileDateToDateTime :把DOS日期格式转换为Delphi日期格式
FileGetDate :返回文件的DOS日期时间戳
FileSetDate :设置文件的DOS日期时间戳
文件读写
Read Readln :从文本或记录文件中读取变量
Write :将指定变量写入文本或记录文件
Writeln :将指定变量写入文本文件并写入一个行结束标志
FileRead :从一个指定文件中读取变量
FileWrite :向指定文件写入数据
FileRead和FileWrite都是以文件句柄为操作对象 主要供系统内部使用
目录操作
MkDir :创建当前目录的子目录
ChDir :改变当前目录
GetDir :返回特定磁盘的当前目录
RmDir :删除一个空子目录
磁盘操作
DiskFree :返回磁盘自由空间
DiskSize :返回特定磁盘的大小
文件查找
FileSearch :查找目录中是否存在某一特定文件
FindFirst :在目录中查找与给定文件名(可以包含匹配符)及属性集相匹配的第一个文件
FindNext :返回符合条件的下一个文件
FindClose :中止一个FindFirst / FindNext序列
有关文件管理标准过程/函数的更详细资料 请查阅Delphi相关的Help主题 以上的大部分过程在后面都有应用实例 读者可以从中体会其用法
在Delphi的联机帮助Help系统中把有关文件的过程/函数分为两个主题 I/O Routine和File_Management Routine 前者大部分以文件变量为操作对象 而后者大部分以文件名或文件句柄为操作对象 这里为了方便读者的使用 我们按功能重新进行了分类 在下一节中主要应用I/O Routine主题下的过程 而在第四节的综合举例中主要应用File_Management Routine主题下的过程
另外 Windows提供了许多有关文件管理的API函数 虽然在一般情况下 利用Delphi提供的函数已足够解决问题 但有时候仍然需要使用Windows API 在( )中我们就用到了Windows API函数GetDriveType 有关Windows API函数的情况 请读者参阅相关的资料 这里不再进行介绍
记录文件的应用
任务介绍
在这一节 我们开发一个系统安全性综合评估方法管理系统 系统安全性在复杂项目开发中十分重要 但由于牵涉面广因而很难获得客观 全面的评估值 鉴于此我们提出多角度 多侧面评估而后定量集成的思路 并在此基础上提出了多种安全性综合评估方法 每种方法由不同部门进行评估而后把结果汇总 综合
为此我们定义如下的记录类型
type
TNature = (Micro Macro)
{方法性质 分为微观和宏观两类}
TMethod = Record
Name: string[ ]; {方法名}
Condition: string[ ]; {方法适用条件}
Nature: TNature; {方法性质}
Result: Real; {方法评估值}
end;
用来记录不同方法的信息
由于不同方法的条件 性质不同 因而对工程开发的不同阶段适用方法集也不同 因此需要根据实际情况对方法集进行管理 我们把每一方法作为一条记录 每一方法集作为一个记录文件 下面讨论系统的实现方法
设计基本思路
本系统要实现的基本功能是文件的打开 创建 关闭 显示 记录的增加 修改 删除以及结果的综合和显示 为此我们使用了两组按钮分别用于文件和记录的操作 使用一个StringGrid控件来显示文件内容 使用一个只读编辑框显示结果的综合
其中各部件的名称 功能如下表所示
表 主窗口部件的设计
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
部件名称 主要属性 备注
──────────────────────────────────────
RecFileForm BorderStyle=bsDialog 文件打开后把文件名附到窗口标题后
Position=poScreenCenter
StringGrid 大小行数动态确定
HazAttr(编辑框) ReadOnly=True 显示综合结果
OpenButton TabOrder= 打开一个记录文件 若文件不存在则创建
NewButton Caption= 打开 创建一个记录文件 若文件存在则打开
CloseButton Caption= 关闭 关闭一个已打开的文件
AddButton Caption= 增加 增加一条记录
ModifyButton Caption= 修改 修改一条记录
DeleteButton Caption= 删除 删除一条记录
CalcuButton Caption= 计算 计算最终结果并显示
ExitButton Caption= 退出 系统终止 若当前有打开的文件则先关闭
OpenDialog Filter= 选择或输入欲打开的文件
Record File(* Rec)| Rec
|Any File(* *)|* *
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
另外 StringGrid HazAttr的标题用两个标签框(Label)来显示
另外我们还需要一个编辑对话框 其中四个编辑框Name Condition Nature Result分别对应TMethod记录的四个域
为协调程序运行 我们定义了一组全局变量 各变量的类型 作用如下表
表 全局变量及其作用
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
变量名 类型 作用
─────────────────────────────────
MethodFile MethodFileType 与当前打开文件相关联的文件变量
FileName string[ ] 当前打开文件的文件名
Count Count 当前打开文件的记录总数
CurrentRec Integer 当前处理记录号
FileOpened Boolean 当前是否有文件打开
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
记录文件类型MethodFileType的定义为
type
MethodFileType = file of TMethod;
布尔变量FileOpened用于控制文件按钮的使能 变灰 记录按钮的反应以及系统结束时是否需要首先关闭文件
lishixinzhi/Article/program/Delphi/201311/25241