Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
ВнизУдаление записи в типизированном файле Найти похожие ветки
← →
Alex__V (2002-10-18 08:27) [0]Здравствуйте всем.
Как удалить запись в типизированном файле? Делаю так:
PersonRec.from:= "";
PersonRec.adres:="";
write(ff ,PersonRec);
но в listview отображаются пустые строки.
Можно ли каким-нибудь образом удалить пустые записи в типизированном файле?
← →
gek (2002-10-18 08:33) [1]Нет, так не пойдет.
Надо использовать Seek, write, Truncate
← →
Alex__V (2002-10-18 08:39) [2]seek(ff,numrec+2);
read(ff,personrec);
Полностью это выглядит так:
from:=personrec.from;
adres:=personrec.Adres;
if Application.MessageBox(PChar("Подтвердите удаление записи"+#13+
from+", "+adres),
"Подтвердите!",MB_OKCANCEL + MB_DEFBUTTON1) = IDOK then begin
seek(ff,numrec+2);
PersonRec.from:= "";
PersonRec.adres:="";
write(ff ,PersonRec);
listview1.ItemFocused.Delete;
listview1.Refresh;
Остаются пустые строки.
2gek
для чего truncate?
← →
gek (2002-10-18 08:54) [3]Приблизительно тебе надо сделать так:
1.Записать на место удаленной записи, ну наприер последнюю запись
2.Так как теперь у тебя две одинаковые записи, надо перейти
в конец Seek(ff,pred(FileSize(ff));
3.Обрезать ненужную последнюю запись - для этого и служит
Truncate - усечь размер до текущей позиции
← →
Anatoly Podgoretsky (2002-10-18 09:06) [4]Что в последнее время подобные вопросы чтали очень часто задаваться. Для удаления чего из середины чего длинного ни чего не придумано окромя как сместить остаток на место удаляемого.
Можно пойти еще и по пути баз данных - не удалять! а помечать как удаленное и в дальнейшим или использовать это место повторно или производить упаковку в удобное время. При больших объемов эти методы предпочтительнее, конечно математика должна учитывать наличие "удаленных" записей.
← →
Alex__V (2002-10-18 09:11) [5]to Anatoly Podgoretsky
<или производить упаковку в удобное время
Если можно, подробнее: как упаковать типизированный файл?
← →
Anatoly Podgoretsky (2002-10-18 09:18) [6]Следует понимать, что ты хочешь сделать записи с пометками, иначе нечего паковать. Очень просто - два файла, из оригинала копируешь не помеченные записи во второй, естественно тоже можешь сделать и с одним файлом, перемещая записи и в конце обрезав конец файла с оставшими. Чистая голая математика, советую проделать эту операцию на бумаге и сразу наступит просветление.
Страницы: 1 вся ветка
Форум: "Основная";
Текущий архив: 2002.10.28;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.009 c