Главная страница
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.015 c
1-92461
Romych
2002-10-17 09:16
2002.10.28
StringGrid- или чтот похожее


7-92746
PSERG
2002-08-21 14:59
2002.10.28
Access violation !


3-92376
Maik
2002-10-07 18:30
2002.10.28
Список активных пользователей


1-92420
Leny
2002-10-17 12:51
2002.10.28
Два вопроса по Excel


1-92497
alextov
2002-10-18 11:32
2002.10.28
Как правильно переименовать компонент в runtime ?