Главная страница
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-92405
BJValentine
2002-10-07 14:27
2002.10.28
MS SQL


14-92700
Johnny Smith
2002-10-04 16:29
2002.10.28
Поскольку модератор грохает...


14-92735
oleg_er
2002-10-09 06:38
2002.10.28
как создать свой компонент?


14-92695
raiv
2002-10-08 09:56
2002.10.28
Уважаемые знатоки Delphi, у меня к Вам вот такой вопрос.


1-92496
sosv
2002-10-18 11:32
2002.10.28
CompositeReport