Главная страница
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.016 c
3-37497
MicroWorld
2003-12-17 12:25
2004.01.13
настройка сетевой БД


6-37815
UNick
2003-11-14 16:14
2004.01.13
Как мне задать тему письма


1-37780
TuZ
2003-12-29 13:27
2004.01.13
Как добавить иконку в консольное приложение?


7-37956
z_h_e
2003-10-29 20:27
2004.01.13
LPT


3-37577
Mikka
2003-12-14 14:20
2004.01.13
Сервер БД SQL Server