文件管理(二)

2016-01-29 14:01 4 1 收藏

文件管理(二),文件管理(二)

【 tulaoshi.com - Delphi 】

 

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);

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)

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,

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)

[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);

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)

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,

(本文来源于图老师网站,更多请访问http://www.tulaoshi.com/delphi/)

[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 结果综合 

  对不同方法的评估结果,可按一定的公式进行综合。当用户按下“计算”按钮时,系统进行计算并把综合结果写入HazAttr只读编辑框中。

  为保证结果显示的正确性,每次增加、修改、删除操作确认后HazAttr编辑框清空。 

6.2.9 编辑对话框的输入检查 

  当用户单击“增加”或“修改”按钮时系统将弹出一个编辑对话框,让用户输入或修改记录内容。其中的三个编辑框,一个组合列表框分别对应TMethod 的四个域。由于TMethodResult域必须是[0,1] 间的小数,因此当用户按OK键关闭对话框时应进行类型和范围检查。

  在VB中我做过同样的工作,那时需要对用户输入的键码逐个进行判断。但这种方法很繁琐、很难做圆满(如不能很好地支持编辑键)。而

来源:http://www.tulaoshi.com/n/20160129/1492296.html

延伸阅读
手机文件管理软件新建文件方法   1)打开手机文件管理软件,在软件界面点击下方+图标。    2)在弹出新建对话框有三种,文件夹,文件,拍照。小编选择的是拍照。    3)选择照片名称,点击确定,这样照片也就创建成功了。  
标签: windows 操作系统
一、找到“资源管理器” 俗话说:“条条大路通罗马”,虽然启动资源管理器的方法有多种,但我们最常用的还是利用开始菜单进行:单击“开始→所有程序→附件”(表示单击“开始”菜单,然后再把指针移向“所有程序”,稍等片刻便会弹出二级菜单,再把指针平移到二级菜单上,再在二级菜单上把指针移到“附件”上,以后表达方式与此类...
标签: PHP
  图书目录输入部分: <? if(!$UploadAction): ? <? //本程序是为输入书名,作者、出版社资料而设。 //编者:孔秀祥。日期:2001/3/24 /* session_start(); if (!isset($auth_passed)) { echo "本功能只有授权用户才能使用。"; return -1; } if(isset($u_name)) {   session_name($u_name); /...
小米文件管理器试用 MIUI作为第三方ROM受到了全世界Android用户的欢迎,这个ROM不仅仅有着漂亮的UI界面,更改进了大量内置应用程序,让Android手机更适合中国用户使用,在MIUI的大量定制应用中,其中小米的文件管理器就是其中非常有特色的。 小米文件管理器 小米文件管理器按照文件类型进行扫描归类,让用户在查找文件时直观、快捷,同时...
快车Flashget的文件管理功能 不断提速的宽带网络和不断提升性能的下载工具,为广大网友带来了更好的极速体验。在众多下载工具中,快车是最为出众、最受欢迎的一款,它不仅在于下载速度上的表现,不仅提供强大而丰富的功能,而且更在于下载后对文件的管理功能。 当下载完成列表中的资源越来越多时,对它们的管理就成了一个不小的问题...