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

Вниз

Как удалить запись из типизированного файла?   Найти похожие ветки 

 
amo   (2003-12-29 16:06) [0]

Здравствуйте уважаемые мастера! Помогите пожалуйста заблудившемуся в дебрях Delphi ламеру, подскажите как удалить из типизированного файла запись.


 
Anatoly Podgoretsky ©   (2003-12-29 16:13) [1]

Сдвиг


 
amo   (2003-12-29 16:16) [2]

А по подробнее если можно.


 
Anatoly Podgoretsky ©   (2003-12-29 16:18) [3]

Сдвинуть на место удаленой


 
YuRock ©   (2003-12-29 16:19) [4]

Это сделать не просто (не быстро). Для этого есть 2 способа:

1. (плохой): в цикле перезаписывать записи от конца к удаляемой записи:

AssignFile(hFile, "имя файла");
ReSet(hFile);
Seek(hFile, <номер удаляемой записи>);
while not EOF(hFile) do
begin
Read(hFile, DataRecord);
Seek(hFile, FilePos(hFile) - 2);
Write(hFile, DataRecord);
Seek(hFile, FilePos(hFile) + 1);
end;
Seek(hFile, FilePos(hFile) - 1);
Truncate(hFile);
CloseFile(hFile);


2. В DataRecord сделать флажек Deleted, и просто присваивать ему True при удалении (ну и, естественно, ставить фильтр при обработке). Если хочешь - можно написать процедуру упаковки (и вызывать ее иногда), которая удаляет все помеченные на удаление записи. На основе (1) ты это легко напишешь.


 
YuRock ©   (2003-12-29 16:21) [5]

В 1 я имел в виду
Seek(hFile, <номер удаляемой записи> + 1), конечно...


 
amo   (2003-12-29 16:21) [6]

Огромное человеческое спасибо!



Страницы: 1 вся ветка

Текущий архив: 2004.01.13;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.014 c
1-37677
Witcher
2003-12-26 13:07
2004.01.13
Системы счисления


14-37895
mfender
2003-12-17 20:06
2004.01.13
Отключение модема по времени.


4-37974
Vladimir Karpus
2003-11-07 18:19
2004.01.13
GetDIBits периодически ошибается


1-37791
Alibaba
2003-12-27 02:55
2004.01.13
TDateTimePicker


8-37812
WondeRu
2003-09-09 08:50
2004.01.13
wglMakeCurrent +winXP+Pentium4