Главная страница
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.012 c
3-37509
AlexMan
2003-12-11 15:43
2004.01.13
Коннект с удаленной MySQL


6-37831
Cerber
2003-11-10 20:55
2004.01.13
Wininet


14-37902
Maxim Vetera
2003-12-19 19:43
2004.01.13
В одиночестве.


3-37526
Stas
2003-12-17 10:59
2004.01.13
Диаграммы для InterBase


9-37488
Zloy Alien
2003-05-02 08:17
2004.01.13
ГЕНЕРАТОР ИМЕН В ИГРАХ.