Главная страница
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.015 c
1-37688
___Nikolay
2003-12-25 09:08
2004.01.13
Вопрос про MicroStation


3-37502
Nikita
2003-12-15 16:09
2004.01.13
Вопрос по таблицам Paradox


3-37522
Sandman25
2003-12-16 17:33
2004.01.13
Insert и Autoincrement


9-37489
Карлсон
2003-06-24 12:00
2004.01.13
проверка на разрешение и количество цветов.


1-37794
succer
2003-12-28 04:53
2004.01.13
Как переустановить модуль forms.pas