Текущий архив: 2004.01.13;
Скачать: CL | DM;
ВнизКак удалить запись из типизированного файла? Найти похожие ветки
← →
amo (2003-12-29 16:06) [0]Здравствуйте уважаемые мастера! Помогите пожалуйста заблудившемуся в дебрях Delphi ламеру, подскажите как удалить из типизированного файла запись.
← →
Anatoly Podgoretsky (2003-12-29 16:13) [1]Сдвиг
← →
amo (2003-12-29 16:16) [2]А по подробнее если можно.
← →
Anatoly Podgoretsky (2003-12-29 16:18) [3]Сдвинуть на место удаленой
← →
YuRock (2003-12-29 16:19) [4]Это сделать не просто (не быстро). Для этого есть 2 способа:
1. (плохой): в цикле перезаписывать записи от конца к удаляемой записи:
AssignFile(hFile, "имя файла");
ReSet(hFile);
Seek(hFile, <номер удаляемой записи>);
while not EOF(hFile) do
begin
Read(hFile, DataRecord);
Seek(hFile, FilePos(hFile) - 2);
Write(hFile, DataRecord);
Seek(hFile, FilePos(hFile) + 1);
end;
Seek(hFile, FilePos(hFile) - 1);
Truncate(hFile);
CloseFile(hFile);
2. В DataRecord сделать флажек Deleted, и просто присваивать ему True при удалении (ну и, естественно, ставить фильтр при обработке). Если хочешь - можно написать процедуру упаковки (и вызывать ее иногда), которая удаляет все помеченные на удаление записи. На основе (1) ты это легко напишешь.
← →
YuRock (2003-12-29 16:21) [5]В 1 я имел в виду
Seek(hFile, <номер удаляемой записи> + 1), конечно...
← →
amo (2003-12-29 16:21) [6]Огромное человеческое спасибо!
Страницы: 1 вся ветка
Текущий архив: 2004.01.13;
Скачать: CL | DM;
Память: 0.45 MB
Время: 0.008 c