Главная страница
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.026 c
3-92392
Шурик Ш
2002-10-08 13:10
2002.10.28
Помогите составить запрос


3-92408
Sergey V. Shadrin
2002-09-27 09:47
2002.10.28
проблема с BDE или еще чем-то...


14-92714
Smiths
2002-10-08 18:28
2002.10.28
Давно хотел спросить


7-92756
Blacki
2002-08-23 16:53
2002.10.28
Помогите разобраться с ИП


14-92662
ZZ
2002-10-06 19:11
2002.10.28
Как создать атомную бомбу