共有评论3条
当前显示最后3条评论
|
qiyuanwj |
2006/6/26 14:17:15 |
修改了一个错误,这样删除最后一条记录就不会出错了,修改版已经上传。
function DeleteRecord(Position:Integer):Boolean; Var PersonRec:TPersonRecord; F:file of TPersonRecord; i:Integer; bl:boolean; begin try//判断操作是否成功,用于返回函数值 AssignFile(F,AppPath+DataFileName); bl:=false; try//为了确保释放文件 Reset(F); for i:=Position+1 to GetRecordCount-1 do //如果是最后一条记录则此循环不能执行,此时文件指针指向了eof,因为, begin //读取下一条记录 //此前做过读取或者写记录的操作,执行读写以后,文件指针自动后移一位, seek(F,i); //如果是读取最后一条记录,则文件指针自动指向了eof,如果做 Truncate(F) read(F,PersonRec); // 操作就会出错。可以设置一个标志,如果循环未执行,就是到了最后一条记录, //覆盖当前记录记录 //将文件指针移动到 Position位置,即可正确删除 seek(F,i-1); Write(F,PersonRec); bl:=true; end; if not bl then seek(f, Position); Truncate(F) ;
finally CloseFile(F); end; except Result:=False; //退出函数 exit; end; Result:=True; end; |
xuejf_568568 |
2006/6/27 9:08:47 |
代码有点粗糙,例如:pos函数用的不好,可以用comparestr代替 |
xuejf_568568 |
2006/6/27 9:10:11 |
pos只能模糊查询,而你的代码本意不是如此 |
我要发表评论 |
查看全部评论 |
|