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