Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2002.10.28;
Скачать: CL | DM;

Вниз

Удаление записи в типизированном файле   Найти похожие ветки 

 
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;
Скачать: CL | DM;

Наверх




Память: 0.48 MB
Время: 0.019 c
6-92626
Руль
2002-08-26 02:14
2002.10.28
Помогите загрузить страничку и сохранить только текст!!!!!


14-92659
[NIKEL]
2002-10-06 23:32
2002.10.28
Бухгалтерам


7-92766
vvant
2002-08-23 16:49
2002.10.28
Как убрать приложение из списка по Ctrl+Alt+Del ?


6-92631
Руль
2002-08-27 01:41
2002.10.28
Снова вопрос по извлечению текста из сайта


1-92565
Ricks
2002-10-16 17:49
2002.10.28
GDI Objects