|
Удаление записи
При реализации режима
удаления записи нам нужно учесть тот факт, что порядок
следования записей в файле и коллекции может быть различным.
Поэтому в процедуре DeleteItem организуется цикл поиска
в файле удаляемой записи:
Procedure DeleteItem;
{Удаляет указанный в Location элемент
данных}
var
D: Integer;
PStr: PString;
s: String;
Data: DataType;
begin
PStr := PS.At(Location){Получаем текущую
запись}
s := copy(PSr,1,LName)
seek(DataFile,0);
D := -1;{D - номер записи в файле}
repeat{Цикл поиска по совпадению поля
Name:}
inc(D);
read(DataFile,Data);
with Data do while Length(Name) <
LName do
Name := Name+' '
until Data.Name=s;
seek(DataFile,pred(FileSize(DataFile)));
read(DataFile,Data); {Читаем последнюю
запись}
seek(DataFile,D);
write(DataFile,Data); {Помещаем ее на
место удаляемой}
seek(DataFile,pred(FileSize(DataFile)));
truncate(DataFile); {Удаляем последнюю
запись}
with РS do D := IndexOf(At(Location));
PS.AtFree(D); {Удаляем строку из коллекции}
Draw {Обновляем окно}
end; {DeleteItem}
|